#define TORCH_ASSERT_ONLY_METHOD_OPERATORS
// @generated from ../tools/autograd/templates/python_torch_functions.cpp

// Python bindings for torch.* functions implemented through ATen.
//
// The functions are bound as static methods on a class
// torch._C._VariableFunctions which is also aliased as Variable._torch
// and also copied into 'torch' module.

#include <Python.h>

// Undefine the copysign macro so that at::copysign works as intended with MSVC
// https://github.com/python/cpython/blob/c60394c7fc9cc09b16e9675a3eeb5844b6d8523f/PC/pyconfig.h#L196
#ifdef _MSC_VER
#undef copysign
#endif // _MSC_VER

#include "torch/csrc/autograd/python_torch_functions.h"
#include "torch/csrc/autograd/python_variable.h"
#include "torch/csrc/autograd/utils/wrap_outputs.h"
#include "torch/csrc/Dtype.h"
#include "torch/csrc/DynamicTypes.h"
#include "torch/csrc/Exceptions.h"
#include "torch/csrc/utils/out_types.h"
#include "torch/csrc/utils/pybind.h"
#include "torch/csrc/utils/pycfunction_helpers.h"
#include "torch/csrc/utils/python_arg_parser.h"
#include "torch/csrc/utils/tensor_layouts.h"
#include "torch/csrc/utils/tensor_new.h"
#include "torch/csrc/utils/tensor_numpy.h"
#include "torch/csrc/jit/frontend/tracer.h"
#include "torch/csrc/autograd/generated/variable_factories.h"
#include "torch/csrc/utils/structseq.h"
#include "torch/csrc/utils/device_lazy_init.h"
#include "torch/csrc/autograd/generated/python_return_types.h"

#include <ATen/core/Tensor.h>

#ifndef AT_PER_OPERATOR_HEADERS
#include <ATen/Functions.h>
#else
#include <ATen/ops/_cast_Byte.h>
#include <ATen/ops/_cast_Char.h>
#include <ATen/ops/_cast_Double.h>
#include <ATen/ops/_cast_Float.h>
#include <ATen/ops/_cast_Int.h>
#include <ATen/ops/_cast_Long.h>
#include <ATen/ops/_cast_Short.h>
#include <ATen/ops/_cast_Half.h>
#include <ATen/ops/_make_dual.h>
#include <ATen/ops/_unpack_dual.h>
#include <ATen/ops/align_tensors.h>
#include <ATen/ops/_assert_async.h>
#include <ATen/ops/_assert_scalar.h>
#include <ATen/ops/_functional_assert_scalar.h>
#include <ATen/ops/_functional_assert_async.h>
#include <ATen/ops/_assert_tensor_metadata.h>
#include <ATen/ops/_print.h>
#include <ATen/ops/sym_constrain_range.h>
#include <ATen/ops/sym_constrain_range_for_size.h>
#include <ATen/ops/_functional_sym_constrain_range.h>
#include <ATen/ops/_functional_sym_constrain_range_for_size.h>
#include <ATen/ops/_make_dep_token.h>
#include <ATen/ops/_use_cudnn_ctc_loss.h>
#include <ATen/ops/_cudnn_ctc_loss.h>
#include <ATen/ops/_use_cudnn_rnn_flatten_weight.h>
#include <ATen/ops/_cudnn_rnn_flatten_weight.h>
#include <ATen/ops/_cudnn_rnn.h>
#include <ATen/ops/_cudnn_init_dropout_state.h>
#include <ATen/ops/_debug_has_internal_overlap.h>
#include <ATen/ops/_fused_dropout.h>
#include <ATen/ops/_masked_scale.h>
#include <ATen/ops/native_dropout.h>
#include <ATen/ops/_sobol_engine_draw.h>
#include <ATen/ops/_sobol_engine_ff.h>
#include <ATen/ops/_sobol_engine_scramble.h>
#include <ATen/ops/_sobol_engine_initialize_state.h>
#include <ATen/ops/_reshape_from_tensor.h>
#include <ATen/ops/_shape_as_tensor.h>
#include <ATen/ops/dropout.h>
#include <ATen/ops/dropout.h>
#include <ATen/ops/feature_dropout.h>
#include <ATen/ops/feature_dropout.h>
#include <ATen/ops/alpha_dropout.h>
#include <ATen/ops/alpha_dropout.h>
#include <ATen/ops/feature_alpha_dropout.h>
#include <ATen/ops/feature_alpha_dropout.h>
#include <ATen/ops/abs.h>
#include <ATen/ops/abs.h>
#include <ATen/ops/absolute.h>
#include <ATen/ops/angle.h>
#include <ATen/ops/view_as_real.h>
#include <ATen/ops/view_as_complex.h>
#include <ATen/ops/sgn.h>
#include <ATen/ops/real.h>
#include <ATen/ops/imag.h>
#include <ATen/ops/_conj.h>
#include <ATen/ops/conj.h>
#include <ATen/ops/_conj_physical.h>
#include <ATen/ops/conj_physical.h>
#include <ATen/ops/conj_physical.h>
#include <ATen/ops/resolve_conj.h>
#include <ATen/ops/resolve_neg.h>
#include <ATen/ops/_neg_view.h>
#include <ATen/ops/acos.h>
#include <ATen/ops/acos.h>
#include <ATen/ops/arccos.h>
#include <ATen/ops/arccos.h>
#include <ATen/ops/avg_pool1d.h>
#include <ATen/ops/adaptive_avg_pool1d.h>
#include <ATen/ops/adaptive_max_pool1d.h>
#include <ATen/ops/add.h>
#include <ATen/ops/_add_relu.h>
#include <ATen/ops/_add_relu.h>
#include <ATen/ops/addmv.h>
#include <ATen/ops/addmv.h>
#include <ATen/ops/addr.h>
#include <ATen/ops/affine_grid_generator.h>
#include <ATen/ops/_is_all_true.h>
#include <ATen/ops/_is_any_true.h>
#include <ATen/ops/_test_check_tensor.h>
#include <ATen/ops/_test_functorch_fallback.h>
#include <ATen/ops/all.h>
#include <ATen/ops/allclose.h>
#include <ATen/ops/any.h>
#include <ATen/ops/arange.h>
#include <ATen/ops/_dim_arange.h>
#include <ATen/ops/argmax.h>
#include <ATen/ops/argmin.h>
#include <ATen/ops/acosh.h>
#include <ATen/ops/acosh.h>
#include <ATen/ops/arccosh.h>
#include <ATen/ops/arccosh.h>
#include <ATen/ops/asinh.h>
#include <ATen/ops/asinh.h>
#include <ATen/ops/arcsinh.h>
#include <ATen/ops/arcsinh.h>
#include <ATen/ops/atanh.h>
#include <ATen/ops/atanh.h>
#include <ATen/ops/arctanh.h>
#include <ATen/ops/arctanh.h>
#include <ATen/ops/as_strided.h>
#include <ATen/ops/as_strided.h>
#include <ATen/ops/asin.h>
#include <ATen/ops/asin.h>
#include <ATen/ops/arcsin.h>
#include <ATen/ops/arcsin.h>
#include <ATen/ops/atan.h>
#include <ATen/ops/atan.h>
#include <ATen/ops/arctan.h>
#include <ATen/ops/arctan.h>
#include <ATen/ops/atleast_1d.h>
#include <ATen/ops/atleast_2d.h>
#include <ATen/ops/atleast_3d.h>
#include <ATen/ops/baddbmm.h>
#include <ATen/ops/bartlett_window.h>
#include <ATen/ops/batch_norm.h>
#include <ATen/ops/quantized_batch_norm.h>
#include <ATen/ops/_batch_norm_impl_index.h>
#include <ATen/ops/bernoulli.h>
#include <ATen/ops/bilinear.h>
#include <ATen/ops/binary_cross_entropy_with_logits.h>
#include <ATen/ops/bincount.h>
#include <ATen/ops/bitwise_not.h>
#include <ATen/ops/copysign.h>
#include <ATen/ops/_lazy_clone.h>
#include <ATen/ops/logical_not.h>
#include <ATen/ops/logical_xor.h>
#include <ATen/ops/logical_and.h>
#include <ATen/ops/logical_or.h>
#include <ATen/ops/blackman_window.h>
#include <ATen/ops/bmm.h>
#include <ATen/ops/broadcast_tensors.h>
#include <ATen/ops/broadcast_to.h>
#include <ATen/ops/_sparse_broadcast_to.h>
#include <ATen/ops/cat.h>
#include <ATen/ops/concat.h>
#include <ATen/ops/concatenate.h>
#include <ATen/ops/block_diag.h>
#include <ATen/ops/ceil.h>
#include <ATen/ops/ceil.h>
#include <ATen/ops/chain_matmul.h>
#include <ATen/ops/unsafe_chunk.h>
#include <ATen/ops/chunk.h>
#include <ATen/ops/tensor_split.h>
#include <ATen/ops/clamp.h>
#include <ATen/ops/clamp.h>
#include <ATen/ops/clamp_max.h>
#include <ATen/ops/clamp_max.h>
#include <ATen/ops/clamp_min.h>
#include <ATen/ops/clamp_min.h>
#include <ATen/ops/clip.h>
#include <ATen/ops/clip.h>
#include <ATen/ops/cudnn_is_acceptable.h>
#include <ATen/ops/complex.h>
#include <ATen/ops/polar.h>
#include <ATen/ops/constant_pad_nd.h>
#include <ATen/ops/convolution.h>
#include <ATen/ops/_convolution.h>
#include <ATen/ops/_convolution_mode.h>
#include <ATen/ops/conv1d.h>
#include <ATen/ops/conv2d.h>
#include <ATen/ops/conv3d.h>
#include <ATen/ops/conv_tbc.h>
#include <ATen/ops/conv_transpose1d.h>
#include <ATen/ops/conv_transpose2d.h>
#include <ATen/ops/conv_transpose3d.h>
#include <ATen/ops/_copy_from.h>
#include <ATen/ops/_copy_from_and_resize.h>
#include <ATen/ops/cos.h>
#include <ATen/ops/cos.h>
#include <ATen/ops/cosh.h>
#include <ATen/ops/cosh.h>
#include <ATen/ops/cosine_embedding_loss.h>
#include <ATen/ops/count_nonzero.h>
#include <ATen/ops/cov.h>
#include <ATen/ops/corrcoef.h>
#include <ATen/ops/cudnn_affine_grid_generator.h>
#include <ATen/ops/cudnn_batch_norm.h>
#include <ATen/ops/cudnn_convolution.h>
#include <ATen/ops/cudnn_convolution_transpose.h>
#include <ATen/ops/_mps_convolution_transpose.h>
#include <ATen/ops/cudnn_convolution_relu.h>
#include <ATen/ops/cudnn_convolution_add_relu.h>
#include <ATen/ops/cudnn_grid_sampler.h>
#include <ATen/ops/cummax.h>
#include <ATen/ops/_cummax_helper.h>
#include <ATen/ops/cummin.h>
#include <ATen/ops/_cummin_helper.h>
#include <ATen/ops/cumprod.h>
#include <ATen/ops/cumsum.h>
#include <ATen/ops/cumulative_trapezoid.h>
#include <ATen/ops/ctc_loss.h>
#include <ATen/ops/_ctc_loss.h>
#include <ATen/ops/diag_embed.h>
#include <ATen/ops/diagflat.h>
#include <ATen/ops/diagonal.h>
#include <ATen/ops/diff.h>
#include <ATen/ops/gradient.h>
#include <ATen/ops/div.h>
#include <ATen/ops/divide.h>
#include <ATen/ops/true_divide.h>
#include <ATen/ops/dot.h>
#include <ATen/ops/vdot.h>
#include <ATen/ops/einsum.h>
#include <ATen/ops/embedding.h>
#include <ATen/ops/embedding_renorm.h>
#include <ATen/ops/_embedding_bag_forward_only.h>
#include <ATen/ops/_rowwise_prune.h>
#include <ATen/ops/row_stack.h>
#include <ATen/ops/embedding_bag.h>
#include <ATen/ops/_embedding_bag.h>
#include <ATen/ops/empty.h>
#include <ATen/ops/empty_permuted.h>
#include <ATen/ops/_empty_affine_quantized.h>
#include <ATen/ops/_empty_per_channel_affine_quantized.h>
#include <ATen/ops/_resize_output.h>
#include <ATen/ops/empty_quantized.h>
#include <ATen/ops/empty_like.h>
#include <ATen/ops/empty_strided.h>
#include <ATen/ops/erf.h>
#include <ATen/ops/erf.h>
#include <ATen/ops/erfc.h>
#include <ATen/ops/erfc.h>
#include <ATen/ops/exp.h>
#include <ATen/ops/exp.h>
#include <ATen/ops/exp2.h>
#include <ATen/ops/exp2.h>
#include <ATen/ops/expm1.h>
#include <ATen/ops/expm1.h>
#include <ATen/ops/eye.h>
#include <ATen/ops/flatten.h>
#include <ATen/ops/unflatten.h>
#include <ATen/ops/fill.h>
#include <ATen/ops/fill.h>
#include <ATen/ops/floor.h>
#include <ATen/ops/floor.h>
#include <ATen/ops/floor_divide.h>
#include <ATen/ops/frac.h>
#include <ATen/ops/frac.h>
#include <ATen/ops/full.h>
#include <ATen/ops/full_like.h>
#include <ATen/ops/from_file.h>
#include <ATen/ops/gcd.h>
#include <ATen/ops/gcd.h>
#include <ATen/ops/lcm.h>
#include <ATen/ops/lcm.h>
#include <ATen/ops/grid_sampler.h>
#include <ATen/ops/grid_sampler_2d.h>
#include <ATen/ops/_grid_sampler_2d_cpu_fallback.h>
#include <ATen/ops/grid_sampler_3d.h>
#include <ATen/ops/hann_window.h>
#include <ATen/ops/hamming_window.h>
#include <ATen/ops/kaiser_window.h>
#include <ATen/ops/hinge_embedding_loss.h>
#include <ATen/ops/group_norm.h>
#include <ATen/ops/native_group_norm.h>
#include <ATen/ops/_fft_r2c.h>
#include <ATen/ops/_fft_c2r.h>
#include <ATen/ops/_fft_c2c.h>
#include <ATen/ops/_validate_compressed_sparse_indices.h>
#include <ATen/ops/_cufft_get_plan_cache_size.h>
#include <ATen/ops/_cufft_get_plan_cache_max_size.h>
#include <ATen/ops/_cufft_set_plan_cache_max_size.h>
#include <ATen/ops/_cufft_clear_plan_cache.h>
#include <ATen/ops/_unsafe_index.h>
#include <ATen/ops/_unsafe_masked_index.h>
#include <ATen/ops/_unsafe_masked_index_put_accumulate.h>
#include <ATen/ops/index_copy.h>
#include <ATen/ops/index_put.h>
#include <ATen/ops/index_put.h>
#include <ATen/ops/_unsafe_index_put.h>
#include <ATen/ops/_index_put_impl.h>
#include <ATen/ops/instance_norm.h>
#include <ATen/ops/isclose.h>
#include <ATen/ops/isin.h>
#include <ATen/ops/isnan.h>
#include <ATen/ops/is_distributed.h>
#include <ATen/ops/is_floating_point.h>
#include <ATen/ops/is_complex.h>
#include <ATen/ops/is_conj.h>
#include <ATen/ops/_is_zerotensor.h>
#include <ATen/ops/is_neg.h>
#include <ATen/ops/isreal.h>
#include <ATen/ops/is_nonzero.h>
#include <ATen/ops/is_same_size.h>
#include <ATen/ops/is_signed.h>
#include <ATen/ops/is_inference.h>
#include <ATen/ops/kl_div.h>
#include <ATen/ops/kron.h>
#include <ATen/ops/kthvalue.h>
#include <ATen/ops/layer_norm.h>
#include <ATen/ops/native_layer_norm.h>
#include <ATen/ops/rms_norm.h>
#include <ATen/ops/nan_to_num.h>
#include <ATen/ops/nan_to_num.h>
#include <ATen/ops/mkldnn_linear_backward_weights.h>
#include <ATen/ops/_cslt_compress.h>
#include <ATen/ops/_cslt_sparse_mm.h>
#include <ATen/ops/_cslt_sparse_mm_search.h>
#include <ATen/ops/_sparse_semi_structured_tile.h>
#include <ATen/ops/_sparse_semi_structured_apply.h>
#include <ATen/ops/_sparse_semi_structured_apply_dense.h>
#include <ATen/ops/_sparse_semi_structured_linear.h>
#include <ATen/ops/_sparse_semi_structured_mm.h>
#include <ATen/ops/_sparse_semi_structured_addmm.h>
#include <ATen/ops/_mixed_dtypes_linear.h>
#include <ATen/ops/fbgemm_linear_int8_weight_fp32_activation.h>
#include <ATen/ops/fbgemm_linear_int8_weight.h>
#include <ATen/ops/fbgemm_linear_quantize_weight.h>
#include <ATen/ops/fbgemm_pack_gemm_matrix_fp16.h>
#include <ATen/ops/_wrapped_linear_prepack.h>
#include <ATen/ops/_wrapped_quantized_linear_prepacked.h>
#include <ATen/ops/fbgemm_linear_fp16_weight_fp32_activation.h>
#include <ATen/ops/fbgemm_linear_fp16_weight.h>
#include <ATen/ops/fbgemm_pack_quantized_matrix.h>
#include <ATen/ops/ldexp.h>
#include <ATen/ops/ldexp.h>
#include <ATen/ops/linspace.h>
#include <ATen/ops/log.h>
#include <ATen/ops/log.h>
#include <ATen/ops/log10.h>
#include <ATen/ops/log10.h>
#include <ATen/ops/log1p.h>
#include <ATen/ops/log1p.h>
#include <ATen/ops/log2.h>
#include <ATen/ops/log2.h>
#include <ATen/ops/logaddexp.h>
#include <ATen/ops/logaddexp2.h>
#include <ATen/ops/xlogy.h>
#include <ATen/ops/xlogy.h>
#include <ATen/ops/logspace.h>
#include <ATen/ops/log_softmax.h>
#include <ATen/ops/_log_softmax.h>
#include <ATen/ops/_log_softmax_backward_data.h>
#include <ATen/ops/_logcumsumexp.h>
#include <ATen/ops/logcumsumexp.h>
#include <ATen/ops/logsumexp.h>
#include <ATen/ops/margin_ranking_loss.h>
#include <ATen/ops/matmul.h>
#include <ATen/ops/matrix_power.h>
#include <ATen/ops/matrix_exp.h>
#include <ATen/ops/_aminmax.h>
#include <ATen/ops/aminmax.h>
#include <ATen/ops/_compute_linear_combination.h>
#include <ATen/ops/max.h>
#include <ATen/ops/amax.h>
#include <ATen/ops/max_pool1d_with_indices.h>
#include <ATen/ops/max_pool1d.h>
#include <ATen/ops/max_pool2d.h>
#include <ATen/ops/mkldnn_max_pool2d.h>
#include <ATen/ops/mkldnn_max_pool3d.h>
#include <ATen/ops/quantized_max_pool1d.h>
#include <ATen/ops/quantized_max_pool2d.h>
#include <ATen/ops/quantized_max_pool3d.h>
#include <ATen/ops/max_pool3d.h>
#include <ATen/ops/mean.h>
#include <ATen/ops/nanmean.h>
#include <ATen/ops/median.h>
#include <ATen/ops/nanmedian.h>
#include <ATen/ops/min.h>
#include <ATen/ops/amin.h>
#include <ATen/ops/_mps_convolution.h>
#include <ATen/ops/mkldnn_convolution.h>
#include <ATen/ops/mkldnn_rnn_layer.h>
#include <ATen/ops/miopen_batch_norm.h>
#include <ATen/ops/miopen_convolution.h>
#include <ATen/ops/miopen_convolution_transpose.h>
#include <ATen/ops/miopen_depthwise_convolution.h>
#include <ATen/ops/miopen_convolution_relu.h>
#include <ATen/ops/miopen_convolution_add_relu.h>
#include <ATen/ops/miopen_rnn.h>
#include <ATen/ops/mm.h>
#include <ATen/ops/_int_mm.h>
#include <ATen/ops/_convert_weight_to_int4pack.h>
#include <ATen/ops/_weight_int4pack_mm.h>
#include <ATen/ops/_convert_weight_to_int4pack_for_cpu.h>
#include <ATen/ops/_weight_int4pack_mm_for_cpu.h>
#include <ATen/ops/_dyn_quant_pack_4bit_weight.h>
#include <ATen/ops/_dyn_quant_matmul_4bit.h>
#include <ATen/ops/_weight_int8pack_mm.h>
#include <ATen/ops/_sparse_sparse_matmul.h>
#include <ATen/ops/mode.h>
#include <ATen/ops/mul.h>
#include <ATen/ops/multiply.h>
#include <ATen/ops/mv.h>
#include <ATen/ops/mvlgamma.h>
#include <ATen/ops/narrow_copy.h>
#include <ATen/ops/narrow.h>
#include <ATen/ops/native_batch_norm.h>
#include <ATen/ops/_native_batch_norm_legit.h>
#include <ATen/ops/_native_batch_norm_legit_no_training.h>
#include <ATen/ops/batch_norm_stats.h>
#include <ATen/ops/batch_norm_elemt.h>
#include <ATen/ops/batch_norm_gather_stats.h>
#include <ATen/ops/batch_norm_gather_stats_with_counts.h>
#include <ATen/ops/batch_norm_backward_reduce.h>
#include <ATen/ops/batch_norm_backward_elemt.h>
#include <ATen/ops/batch_norm_update_stats.h>
#include <ATen/ops/is_vulkan_available.h>
#include <ATen/ops/_nnpack_available.h>
#include <ATen/ops/_nnpack_spatial_convolution.h>
#include <ATen/ops/ones.h>
#include <ATen/ops/ones_like.h>
#include <ATen/ops/pairwise_distance.h>
#include <ATen/ops/cdist.h>
#include <ATen/ops/_euclidean_dist.h>
#include <ATen/ops/pdist.h>
#include <ATen/ops/cosine_similarity.h>
#include <ATen/ops/permute.h>
#include <ATen/ops/movedim.h>
#include <ATen/ops/moveaxis.h>
#include <ATen/ops/adjoint.h>
#include <ATen/ops/pixel_shuffle.h>
#include <ATen/ops/pixel_unshuffle.h>
#include <ATen/ops/channel_shuffle.h>
#include <ATen/ops/native_channel_shuffle.h>
#include <ATen/ops/_pin_memory.h>
#include <ATen/ops/pinverse.h>
#include <ATen/ops/poisson_nll_loss.h>
#include <ATen/ops/rad2deg.h>
#include <ATen/ops/rad2deg.h>
#include <ATen/ops/deg2rad.h>
#include <ATen/ops/deg2rad.h>
#include <ATen/ops/scalar_tensor.h>
#include <ATen/ops/rand.h>
#include <ATen/ops/rand_like.h>
#include <ATen/ops/randint.h>
#include <ATen/ops/randint_like.h>
#include <ATen/ops/randn.h>
#include <ATen/ops/randn_like.h>
#include <ATen/ops/randperm.h>
#include <ATen/ops/ravel.h>
#include <ATen/ops/reciprocal.h>
#include <ATen/ops/reciprocal.h>
#include <ATen/ops/neg.h>
#include <ATen/ops/neg.h>
#include <ATen/ops/negative.h>
#include <ATen/ops/negative.h>
#include <ATen/ops/repeat_interleave.h>
#include <ATen/ops/reshape.h>
#include <ATen/ops/_mkldnn_reshape.h>
#include <ATen/ops/round.h>
#include <ATen/ops/round.h>
#include <ATen/ops/rrelu.h>
#include <ATen/ops/rrelu.h>
#include <ATen/ops/relu.h>
#include <ATen/ops/relu.h>
#include <ATen/ops/prelu.h>
#include <ATen/ops/_prelu_kernel.h>
#include <ATen/ops/hardshrink.h>
#include <ATen/ops/rsqrt.h>
#include <ATen/ops/rsqrt.h>
#include <ATen/ops/select.h>
#include <ATen/ops/selu.h>
#include <ATen/ops/selu.h>
#include <ATen/ops/celu.h>
#include <ATen/ops/celu.h>
#include <ATen/ops/sigmoid.h>
#include <ATen/ops/sigmoid.h>
#include <ATen/ops/logit.h>
#include <ATen/ops/logit.h>
#include <ATen/ops/sin.h>
#include <ATen/ops/sin.h>
#include <ATen/ops/sinc.h>
#include <ATen/ops/sinc.h>
#include <ATen/ops/sinh.h>
#include <ATen/ops/sinh.h>
#include <ATen/ops/detach.h>
#include <ATen/ops/detach.h>
#include <ATen/ops/slice_inverse.h>
#include <ATen/ops/slice_scatter.h>
#include <ATen/ops/select_scatter.h>
#include <ATen/ops/diagonal_scatter.h>
#include <ATen/ops/as_strided_scatter.h>
#include <ATen/ops/smm.h>
#include <ATen/ops/softmax.h>
#include <ATen/ops/_softmax.h>
#include <ATen/ops/_softmax_backward_data.h>
#include <ATen/ops/unsafe_split.h>
#include <ATen/ops/split.h>
#include <ATen/ops/unsafe_split_with_sizes.h>
#include <ATen/ops/split_with_sizes.h>
#include <ATen/ops/hsplit.h>
#include <ATen/ops/vsplit.h>
#include <ATen/ops/dsplit.h>
#include <ATen/ops/squeeze.h>
#include <ATen/ops/sspaddmm.h>
#include <ATen/ops/_chunk_cat.h>
#include <ATen/ops/stack.h>
#include <ATen/ops/_stack.h>
#include <ATen/ops/hstack.h>
#include <ATen/ops/vstack.h>
#include <ATen/ops/dstack.h>
#include <ATen/ops/stft.h>
#include <ATen/ops/istft.h>
#include <ATen/ops/sum.h>
#include <ATen/ops/nansum.h>
#include <ATen/ops/sqrt.h>
#include <ATen/ops/sqrt.h>
#include <ATen/ops/square.h>
#include <ATen/ops/square.h>
#include <ATen/ops/std.h>
#include <ATen/ops/std_mean.h>
#include <ATen/ops/prod.h>
#include <ATen/ops/t.h>
#include <ATen/ops/tan.h>
#include <ATen/ops/tan.h>
#include <ATen/ops/tanh.h>
#include <ATen/ops/tanh.h>
#include <ATen/ops/tensordot.h>
#include <ATen/ops/threshold.h>
#include <ATen/ops/threshold.h>
#include <ATen/ops/tile.h>
#include <ATen/ops/transpose.h>
#include <ATen/ops/_mkldnn_transpose.h>
#include <ATen/ops/_mkldnn_transpose.h>
#include <ATen/ops/flip.h>
#include <ATen/ops/fliplr.h>
#include <ATen/ops/flipud.h>
#include <ATen/ops/roll.h>
#include <ATen/ops/rot90.h>
#include <ATen/ops/trapezoid.h>
#include <ATen/ops/trapz.h>
#include <ATen/ops/_transform_bias_rescale_qkv.h>
#include <ATen/ops/_nested_tensor_from_mask.h>
#include <ATen/ops/_nested_tensor_from_mask_left_aligned.h>
#include <ATen/ops/_nested_from_padded.h>
#include <ATen/ops/_nested_from_padded_and_nested_example.h>
#include <ATen/ops/_nested_view_from_buffer.h>
#include <ATen/ops/_nested_view_from_buffer_copy.h>
#include <ATen/ops/_nested_view_from_jagged.h>
#include <ATen/ops/_nested_view_from_jagged_copy.h>
#include <ATen/ops/_nested_get_values.h>
#include <ATen/ops/_nested_get_values_copy.h>
#include <ATen/ops/_nested_get_offsets.h>
#include <ATen/ops/_nested_get_lengths.h>
#include <ATen/ops/_nested_get_ragged_idx.h>
#include <ATen/ops/_nested_get_min_seqlen.h>
#include <ATen/ops/_nested_get_max_seqlen.h>
#include <ATen/ops/_nested_get_jagged_dummy.h>
#include <ATen/ops/_nested_compute_contiguous_strides_offsets.h>
#include <ATen/ops/_trilinear.h>
#include <ATen/ops/triplet_margin_loss.h>
#include <ATen/ops/trunc.h>
#include <ATen/ops/trunc.h>
#include <ATen/ops/fix.h>
#include <ATen/ops/fix.h>
#include <ATen/ops/_has_compatible_shallow_copy_type.h>
#include <ATen/ops/_unique.h>
#include <ATen/ops/unique_dim.h>
#include <ATen/ops/unique_consecutive.h>
#include <ATen/ops/_unique2.h>
#include <ATen/ops/unsqueeze.h>
#include <ATen/ops/vander.h>
#include <ATen/ops/var.h>
#include <ATen/ops/var_mean.h>
#include <ATen/ops/where.h>
#include <ATen/ops/norm_except_dim.h>
#include <ATen/ops/_weight_norm.h>
#include <ATen/ops/_weight_norm_interface.h>
#include <ATen/ops/zeros.h>
#include <ATen/ops/_efficientzerotensor.h>
#include <ATen/ops/zeros_like.h>
#include <ATen/ops/_standard_gamma_grad.h>
#include <ATen/ops/_standard_gamma.h>
#include <ATen/ops/_dirichlet_grad.h>
#include <ATen/ops/_sample_dirichlet.h>
#include <ATen/ops/poisson.h>
#include <ATen/ops/binomial.h>
#include <ATen/ops/native_norm.h>
#include <ATen/ops/_sparse_sum.h>
#include <ATen/ops/_sparse_csr_sum.h>
#include <ATen/ops/_sparse_csr_prod.h>
#include <ATen/ops/_sparse_softmax_backward_data.h>
#include <ATen/ops/_sparse_log_softmax_backward_data.h>
#include <ATen/ops/norm.h>
#include <ATen/ops/frexp.h>
#include <ATen/ops/frobenius_norm.h>
#include <ATen/ops/nuclear_norm.h>
#include <ATen/ops/clone.h>
#include <ATen/ops/positive.h>
#include <ATen/ops/resize_as.h>
#include <ATen/ops/resize_as_sparse.h>
#include <ATen/ops/zero.h>
#include <ATen/ops/sub.h>
#include <ATen/ops/subtract.h>
#include <ATen/ops/rsub.h>
#include <ATen/ops/heaviside.h>
#include <ATen/ops/addmm.h>
#include <ATen/ops/_addmm_activation.h>
#include <ATen/ops/_scaled_mm.h>
#include <ATen/ops/_scaled_grouped_mm.h>
#include <ATen/ops/_validate_sparse_coo_tensor_args.h>
#include <ATen/ops/_validate_sparse_compressed_tensor_args.h>
#include <ATen/ops/_validate_sparse_csr_tensor_args.h>
#include <ATen/ops/_validate_sparse_csc_tensor_args.h>
#include <ATen/ops/_validate_sparse_bsr_tensor_args.h>
#include <ATen/ops/_validate_sparse_bsc_tensor_args.h>
#include <ATen/ops/_to_cpu.h>
#include <ATen/ops/_coalesce.h>
#include <ATen/ops/hspmm.h>
#include <ATen/ops/unbind.h>
#include <ATen/ops/_to_sparse_semi_structured.h>
#include <ATen/ops/quantize_per_tensor_dynamic.h>
#include <ATen/ops/quantize_per_tensor.h>
#include <ATen/ops/quantize_per_channel.h>
#include <ATen/ops/dequantize.h>
#include <ATen/ops/q_scale.h>
#include <ATen/ops/q_zero_point.h>
#include <ATen/ops/q_per_channel_scales.h>
#include <ATen/ops/q_per_channel_zero_points.h>
#include <ATen/ops/q_per_channel_axis.h>
#include <ATen/ops/int_repr.h>
#include <ATen/ops/_make_per_tensor_quantized_tensor.h>
#include <ATen/ops/_make_per_channel_quantized_tensor.h>
#include <ATen/ops/fake_quantize_per_tensor_affine.h>
#include <ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams.h>
#include <ATen/ops/_fake_quantize_learnable_per_tensor_affine.h>
#include <ATen/ops/fake_quantize_per_channel_affine.h>
#include <ATen/ops/_fake_quantize_learnable_per_channel_affine.h>
#include <ATen/ops/fused_moving_avg_obs_fake_quant.h>
#include <ATen/ops/_fused_moving_avg_obs_fq_helper.h>
#include <ATen/ops/_choose_qparams_per_tensor.h>
#include <ATen/ops/_saturate_weight_to_fp16.h>
#include <ATen/ops/choose_qparams_optimized.h>
#include <ATen/ops/meshgrid.h>
#include <ATen/ops/cartesian_prod.h>
#include <ATen/ops/combinations.h>
#include <ATen/ops/result_type.h>
#include <ATen/ops/can_cast.h>
#include <ATen/ops/promote_types.h>
#include <ATen/ops/_lstm_mps.h>
#include <ATen/ops/lstm.h>
#include <ATen/ops/gru.h>
#include <ATen/ops/rnn_tanh.h>
#include <ATen/ops/rnn_relu.h>
#include <ATen/ops/lstm_cell.h>
#include <ATen/ops/gru_cell.h>
#include <ATen/ops/rnn_tanh_cell.h>
#include <ATen/ops/rnn_relu_cell.h>
#include <ATen/ops/quantized_lstm_cell.h>
#include <ATen/ops/quantized_gru_cell.h>
#include <ATen/ops/quantized_rnn_relu_cell.h>
#include <ATen/ops/quantized_rnn_tanh_cell.h>
#include <ATen/ops/_pack_padded_sequence.h>
#include <ATen/ops/_pad_packed_sequence.h>
#include <ATen/ops/masked_fill.h>
#include <ATen/ops/masked_scatter.h>
#include <ATen/ops/_masked_softmax.h>
#include <ATen/ops/put.h>
#include <ATen/ops/index_add.h>
#include <ATen/ops/index_reduce.h>
#include <ATen/ops/index_fill.h>
#include <ATen/ops/scatter.h>
#include <ATen/ops/scatter_add.h>
#include <ATen/ops/scatter_reduce.h>
#include <ATen/ops/bitwise_and.h>
#include <ATen/ops/and.h>
#include <ATen/ops/bitwise_or.h>
#include <ATen/ops/or.h>
#include <ATen/ops/bitwise_xor.h>
#include <ATen/ops/xor.h>
#include <ATen/ops/lshift.h>
#include <ATen/ops/bitwise_left_shift.h>
#include <ATen/ops/rshift.h>
#include <ATen/ops/bitwise_right_shift.h>
#include <ATen/ops/addbmm.h>
#include <ATen/ops/diag.h>
#include <ATen/ops/cross.h>
#include <ATen/ops/triu.h>
#include <ATen/ops/tril.h>
#include <ATen/ops/tril_indices.h>
#include <ATen/ops/triu_indices.h>
#include <ATen/ops/trace.h>
#include <ATen/ops/ne.h>
#include <ATen/ops/not_equal.h>
#include <ATen/ops/eq.h>
#include <ATen/ops/ge.h>
#include <ATen/ops/greater_equal.h>
#include <ATen/ops/le.h>
#include <ATen/ops/less_equal.h>
#include <ATen/ops/gt.h>
#include <ATen/ops/greater.h>
#include <ATen/ops/lt.h>
#include <ATen/ops/less.h>
#include <ATen/ops/take.h>
#include <ATen/ops/take_along_dim.h>
#include <ATen/ops/index_select.h>
#include <ATen/ops/masked_select.h>
#include <ATen/ops/nonzero_static.h>
#include <ATen/ops/argwhere.h>
#include <ATen/ops/gather.h>
#include <ATen/ops/addcmul.h>
#include <ATen/ops/addcdiv.h>
#include <ATen/ops/triangular_solve.h>
#include <ATen/ops/_linalg_check_errors.h>
#include <ATen/ops/svd.h>
#include <ATen/ops/swapaxes.h>
#include <ATen/ops/swapdims.h>
#include <ATen/ops/cholesky.h>
#include <ATen/ops/cholesky_solve.h>
#include <ATen/ops/cholesky_inverse.h>
#include <ATen/ops/qr.h>
#include <ATen/ops/geqrf.h>
#include <ATen/ops/orgqr.h>
#include <ATen/ops/ormqr.h>
#include <ATen/ops/_lu_with_info.h>
#include <ATen/ops/lu_solve.h>
#include <ATen/ops/lu_unpack.h>
#include <ATen/ops/multinomial.h>
#include <ATen/ops/lgamma.h>
#include <ATen/ops/digamma.h>
#include <ATen/ops/polygamma.h>
#include <ATen/ops/erfinv.h>
#include <ATen/ops/i0.h>
#include <ATen/ops/i0.h>
#include <ATen/ops/sign.h>
#include <ATen/ops/signbit.h>
#include <ATen/ops/dist.h>
#include <ATen/ops/atan2.h>
#include <ATen/ops/arctan2.h>
#include <ATen/ops/lerp.h>
#include <ATen/ops/histc.h>
#include <ATen/ops/histogram.h>
#include <ATen/ops/_histogramdd_bin_edges.h>
#include <ATen/ops/_histogramdd_from_bin_cts.h>
#include <ATen/ops/_histogramdd_from_bin_tensors.h>
#include <ATen/ops/histogramdd.h>
#include <ATen/ops/fmod.h>
#include <ATen/ops/hypot.h>
#include <ATen/ops/igamma.h>
#include <ATen/ops/igammac.h>
#include <ATen/ops/nextafter.h>
#include <ATen/ops/remainder.h>
#include <ATen/ops/fmin.h>
#include <ATen/ops/fmax.h>
#include <ATen/ops/maximum.h>
#include <ATen/ops/minimum.h>
#include <ATen/ops/quantile.h>
#include <ATen/ops/nanquantile.h>
#include <ATen/ops/sort.h>
#include <ATen/ops/msort.h>
#include <ATen/ops/argsort.h>
#include <ATen/ops/topk.h>
#include <ATen/ops/renorm.h>
#include <ATen/ops/equal.h>
#include <ATen/ops/pow.h>
#include <ATen/ops/float_power.h>
#include <ATen/ops/normal.h>
#include <ATen/ops/_amp_foreach_non_finite_check_and_unscale.h>
#include <ATen/ops/_amp_update_scale.h>
#include <ATen/ops/_foreach_add.h>
#include <ATen/ops/_foreach_add.h>
#include <ATen/ops/_foreach_sub.h>
#include <ATen/ops/_foreach_sub.h>
#include <ATen/ops/_foreach_mul.h>
#include <ATen/ops/_foreach_mul.h>
#include <ATen/ops/_foreach_div.h>
#include <ATen/ops/_foreach_div.h>
#include <ATen/ops/_foreach_clamp_max.h>
#include <ATen/ops/_foreach_clamp_max.h>
#include <ATen/ops/_foreach_clamp_min.h>
#include <ATen/ops/_foreach_clamp_min.h>
#include <ATen/ops/_foreach_maximum.h>
#include <ATen/ops/_foreach_maximum.h>
#include <ATen/ops/_foreach_minimum.h>
#include <ATen/ops/_foreach_minimum.h>
#include <ATen/ops/_foreach_addcdiv.h>
#include <ATen/ops/_foreach_addcdiv.h>
#include <ATen/ops/_foreach_addcmul.h>
#include <ATen/ops/_foreach_addcmul.h>
#include <ATen/ops/_foreach_abs.h>
#include <ATen/ops/_foreach_abs.h>
#include <ATen/ops/_foreach_acos.h>
#include <ATen/ops/_foreach_acos.h>
#include <ATen/ops/_foreach_asin.h>
#include <ATen/ops/_foreach_asin.h>
#include <ATen/ops/_foreach_atan.h>
#include <ATen/ops/_foreach_atan.h>
#include <ATen/ops/_foreach_ceil.h>
#include <ATen/ops/_foreach_ceil.h>
#include <ATen/ops/_foreach_cos.h>
#include <ATen/ops/_foreach_cos.h>
#include <ATen/ops/_foreach_cosh.h>
#include <ATen/ops/_foreach_cosh.h>
#include <ATen/ops/_foreach_erf.h>
#include <ATen/ops/_foreach_erf.h>
#include <ATen/ops/_foreach_erfc.h>
#include <ATen/ops/_foreach_erfc.h>
#include <ATen/ops/_foreach_exp.h>
#include <ATen/ops/_foreach_exp.h>
#include <ATen/ops/_foreach_expm1.h>
#include <ATen/ops/_foreach_expm1.h>
#include <ATen/ops/_foreach_floor.h>
#include <ATen/ops/_foreach_floor.h>
#include <ATen/ops/_foreach_frac.h>
#include <ATen/ops/_foreach_frac.h>
#include <ATen/ops/_foreach_lerp.h>
#include <ATen/ops/_foreach_lerp.h>
#include <ATen/ops/_foreach_lgamma.h>
#include <ATen/ops/_foreach_lgamma.h>
#include <ATen/ops/_foreach_log.h>
#include <ATen/ops/_foreach_log.h>
#include <ATen/ops/_foreach_log10.h>
#include <ATen/ops/_foreach_log10.h>
#include <ATen/ops/_foreach_log1p.h>
#include <ATen/ops/_foreach_log1p.h>
#include <ATen/ops/_foreach_log2.h>
#include <ATen/ops/_foreach_log2.h>
#include <ATen/ops/_foreach_max.h>
#include <ATen/ops/_foreach_neg.h>
#include <ATen/ops/_foreach_neg.h>
#include <ATen/ops/_foreach_norm.h>
#include <ATen/ops/_foreach_pow.h>
#include <ATen/ops/_foreach_pow.h>
#include <ATen/ops/_foreach_reciprocal.h>
#include <ATen/ops/_foreach_reciprocal.h>
#include <ATen/ops/_foreach_round.h>
#include <ATen/ops/_foreach_round.h>
#include <ATen/ops/_foreach_rsqrt.h>
#include <ATen/ops/_foreach_rsqrt.h>
#include <ATen/ops/_foreach_sigmoid.h>
#include <ATen/ops/_foreach_sigmoid.h>
#include <ATen/ops/_foreach_sign.h>
#include <ATen/ops/_foreach_sign.h>
#include <ATen/ops/_foreach_sin.h>
#include <ATen/ops/_foreach_sin.h>
#include <ATen/ops/_foreach_sinh.h>
#include <ATen/ops/_foreach_sinh.h>
#include <ATen/ops/_foreach_sqrt.h>
#include <ATen/ops/_foreach_sqrt.h>
#include <ATen/ops/_foreach_tan.h>
#include <ATen/ops/_foreach_tan.h>
#include <ATen/ops/_foreach_tanh.h>
#include <ATen/ops/_foreach_tanh.h>
#include <ATen/ops/_foreach_trunc.h>
#include <ATen/ops/_foreach_trunc.h>
#include <ATen/ops/_foreach_zero.h>
#include <ATen/ops/_foreach_copy.h>
#include <ATen/ops/bucketize.h>
#include <ATen/ops/searchsorted.h>
#include <ATen/ops/_convert_indices_from_coo_to_csr.h>
#include <ATen/ops/_convert_indices_from_csr_to_coo.h>
#include <ATen/ops/mkldnn_adaptive_avg_pool2d.h>
#include <ATen/ops/_adaptive_avg_pool2d.h>
#include <ATen/ops/_adaptive_avg_pool3d.h>
#include <ATen/ops/column_stack.h>
#include <ATen/ops/isfinite.h>
#include <ATen/ops/isinf.h>
#include <ATen/ops/isposinf.h>
#include <ATen/ops/isneginf.h>
#include <ATen/ops/_add_batch_dim.h>
#include <ATen/ops/_remove_batch_dim.h>
#include <ATen/ops/_linalg_det.h>
#include <ATen/ops/det.h>
#include <ATen/ops/_linalg_slogdet.h>
#include <ATen/ops/slogdet.h>
#include <ATen/ops/logdet.h>
#include <ATen/ops/_linalg_eigh.h>
#include <ATen/ops/inverse.h>
#include <ATen/ops/inner.h>
#include <ATen/ops/outer.h>
#include <ATen/ops/ger.h>
#include <ATen/ops/_linalg_svd.h>
#include <ATen/ops/_linalg_solve_ex.h>
#include <ATen/ops/_test_serialization_subcmul.h>
#include <ATen/ops/_test_parallel_materialize.h>
#include <ATen/ops/_test_autograd_multiple_dispatch.h>
#include <ATen/ops/_test_autograd_multiple_dispatch_view.h>
#include <ATen/ops/_test_autograd_multiple_dispatch_view_copy.h>
#include <ATen/ops/segment_reduce.h>
#include <ATen/ops/_nested_tensor_from_tensor_list.h>
#include <ATen/ops/_fw_primal_copy.h>
#include <ATen/ops/_make_dual_copy.h>
#include <ATen/ops/view_as_real_copy.h>
#include <ATen/ops/view_as_complex_copy.h>
#include <ATen/ops/_conj_copy.h>
#include <ATen/ops/_neg_view_copy.h>
#include <ATen/ops/as_strided_copy.h>
#include <ATen/ops/_sparse_broadcast_to_copy.h>
#include <ATen/ops/diagonal_copy.h>
#include <ATen/ops/expand_copy.h>
#include <ATen/ops/permute_copy.h>
#include <ATen/ops/_reshape_alias_copy.h>
#include <ATen/ops/select_copy.h>
#include <ATen/ops/detach_copy.h>
#include <ATen/ops/slice_copy.h>
#include <ATen/ops/split_copy.h>
#include <ATen/ops/split_with_sizes_copy.h>
#include <ATen/ops/squeeze_copy.h>
#include <ATen/ops/t_copy.h>
#include <ATen/ops/transpose_copy.h>
#include <ATen/ops/unsqueeze_copy.h>
#include <ATen/ops/_indices_copy.h>
#include <ATen/ops/_values_copy.h>
#include <ATen/ops/indices_copy.h>
#include <ATen/ops/values_copy.h>
#include <ATen/ops/crow_indices_copy.h>
#include <ATen/ops/col_indices_copy.h>
#include <ATen/ops/ccol_indices_copy.h>
#include <ATen/ops/row_indices_copy.h>
#include <ATen/ops/unbind_copy.h>
#include <ATen/ops/view_copy.h>
#include <ATen/ops/unfold_copy.h>
#include <ATen/ops/alias_copy.h>
#include <ATen/ops/_nested_from_padded_tensor.h>
#include <ATen/ops/_nested_tensor_softmax_with_shape.h>
#include <ATen/ops/_safe_softmax.h>
#include <ATen/ops/_transformer_encoder_layer_fwd.h>
#include <ATen/ops/_native_multi_head_attention.h>
#include <ATen/ops/_fused_sdp_choice.h>
#include <ATen/ops/_scaled_dot_product_attention_math.h>
#include <ATen/ops/_scaled_dot_product_attention_math_for_mps.h>
#include <ATen/ops/_scaled_dot_product_flash_attention.h>
#include <ATen/ops/_scaled_dot_product_flash_attention_for_cpu.h>
#include <ATen/ops/_scaled_dot_product_efficient_attention.h>
#include <ATen/ops/_scaled_dot_product_cudnn_attention.h>
#include <ATen/ops/_triton_scaled_dot_attention.h>
#include <ATen/ops/_fill_mem_eff_dropout_mask.h>
#include <ATen/ops/_triton_multi_head_attention.h>
#include <ATen/ops/_foobar.h>
#include <ATen/ops/_fused_adam.h>
#include <ATen/ops/_fused_adamw.h>
#include <ATen/ops/_fused_sgd.h>
#include <ATen/ops/_fused_adagrad.h>
#include <ATen/ops/_propagate_xla_data.h>
#endif

#include <functional>
#include <initializer_list>
#include <stdexcept>
#include <utility>

using at::Tensor;
using at::Device;
using at::Layout;
using at::Scalar;
using at::ScalarType;
using at::Backend;
using at::OptionalDeviceGuard;
using at::DeviceGuard;
using at::TensorOptions;
using at::IntArrayRef;
using at::Generator;
using at::TensorList;
using at::Dimname;
using at::DimnameList;
using at::ArrayRef;

using torch::utils::check_out_type_matches;
using namespace torch::autograd::utils;

// NOTE: See [Sharded File] comment in VariableType

namespace torch::autograd {

// generated forward declarations start here

static PyObject * THPVariable__cast_Byte(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Char(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Double(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Float(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Int(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Long(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Short(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cast_Half(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__make_dual(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unpack_dual(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_align_tensors(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__assert_async(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__assert_scalar(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__functional_assert_scalar(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__functional_assert_async(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__assert_tensor_metadata(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__print(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sym_constrain_range(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sym_constrain_range_for_size(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__functional_sym_constrain_range(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__functional_sym_constrain_range_for_size(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__make_dep_token(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__use_cudnn_ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cudnn_ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__use_cudnn_rnn_flatten_weight(PyObject* self_, PyObject* args);
static PyObject * THPVariable__cudnn_rnn_flatten_weight(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cudnn_rnn(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cudnn_init_dropout_state(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__debug_has_internal_overlap(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_dropout(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__masked_scale(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_native_dropout(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sobol_engine_draw(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sobol_engine_ff_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sobol_engine_scramble_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sobol_engine_initialize_state_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__reshape_from_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__shape_as_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dropout(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_feature_dropout(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_feature_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_alpha_dropout(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_alpha_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_feature_alpha_dropout(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_feature_alpha_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_abs(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_abs_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_absolute(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_angle(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_view_as_real(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_view_as_complex(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sgn(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_real(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_imag(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__conj(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conj(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__conj_physical(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conj_physical(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conj_physical_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_resolve_conj(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_resolve_neg(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__neg_view(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_acos(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_acos_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arccos(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arccos_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_avg_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_adaptive_avg_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_adaptive_max_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_add(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__add_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__add_relu_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addmv(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addmv_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_affine_grid_generator(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__is_all_true(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__is_any_true(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_check_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_functorch_fallback(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_all(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_allclose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_any(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arange(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__dim_arange(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_argmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_argmin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_acosh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_acosh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arccosh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arccosh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_asinh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_asinh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arcsinh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arcsinh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atanh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atanh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arctanh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arctanh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_as_strided(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_as_strided_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_asin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_asin_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arcsin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arcsin_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atan(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atan_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arctan(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arctan_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atleast_1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atleast_2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atleast_3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_baddbmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bartlett_window(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__batch_norm_impl_index(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bernoulli(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bilinear(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_binary_cross_entropy_with_logits(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bincount(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bitwise_not(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_copysign(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__lazy_clone(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logical_not(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logical_xor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logical_and(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logical_or(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_blackman_window(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_broadcast_tensors(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_broadcast_to(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_broadcast_to(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cat(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_concat(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_concatenate(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_block_diag(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ceil(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ceil_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_chain_matmul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unsafe_chunk(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_chunk(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tensor_split(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clamp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clamp_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clamp_max(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clamp_max_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clamp_min(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clamp_min_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clip(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clip_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_is_acceptable(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_complex(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_polar(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_constant_pad_nd(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__convolution_mode(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv_tbc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv_transpose1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv_transpose2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_conv_transpose3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__copy_from(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__copy_from_and_resize(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cos(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cos_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cosh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cosh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cosine_embedding_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_count_nonzero(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cov(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_corrcoef(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_affine_grid_generator(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_convolution_transpose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__mps_convolution_transpose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_convolution_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_convolution_add_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cudnn_grid_sampler(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cummax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cummax_helper(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cummin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cummin_helper(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cumprod(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cumsum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cumulative_trapezoid(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diag_embed(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diagflat(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diagonal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diff(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gradient(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_div(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_divide(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_true_divide(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dot(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_vdot(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_einsum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_embedding(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_embedding_renorm_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__embedding_bag_forward_only(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__rowwise_prune(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_row_stack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_embedding_bag(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__embedding_bag(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_empty(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_empty_permuted(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__empty_affine_quantized(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__empty_per_channel_affine_quantized(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__resize_output_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_empty_quantized(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_empty_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_empty_strided(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_erf(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_erf_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_erfc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_erfc_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_exp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_exp_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_exp2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_exp2_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_expm1(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_expm1_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_eye(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_flatten(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unflatten(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fill(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fill_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_floor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_floor_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_floor_divide(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_frac(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_frac_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_full(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_full_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_from_file(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gcd(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gcd_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lcm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lcm_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_grid_sampler(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_grid_sampler_2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__grid_sampler_2d_cpu_fallback(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_grid_sampler_3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hann_window(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hamming_window(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_kaiser_window(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hinge_embedding_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_group_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_native_group_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fft_r2c(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fft_c2r(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fft_c2c(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_compressed_sparse_indices(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cufft_get_plan_cache_size(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cufft_get_plan_cache_max_size(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cufft_set_plan_cache_max_size(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cufft_clear_plan_cache(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unsafe_index(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unsafe_masked_index(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unsafe_masked_index_put_accumulate(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_put_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_put(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unsafe_index_put(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__index_put_impl_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_instance_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isclose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isnan(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_distributed(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_floating_point(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_complex(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_conj(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__is_zerotensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_neg(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isreal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_nonzero(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_same_size(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_signed(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_inference(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_kl_div(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_kron(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_kthvalue(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_layer_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_native_layer_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rms_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nan_to_num(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nan_to_num_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mkldnn_linear_backward_weights(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cslt_compress(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cslt_sparse_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__cslt_sparse_mm_search(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_semi_structured_tile(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_semi_structured_apply(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_semi_structured_apply_dense(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_semi_structured_linear(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_semi_structured_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_semi_structured_addmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__mixed_dtypes_linear(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_linear_int8_weight_fp32_activation(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_linear_int8_weight(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_linear_quantize_weight(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_pack_gemm_matrix_fp16(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__wrapped_linear_prepack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__wrapped_quantized_linear_prepacked(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_linear_fp16_weight_fp32_activation(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_linear_fp16_weight(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fbgemm_pack_quantized_matrix(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ldexp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ldexp_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_linspace(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log10(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log10_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log1p(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log1p_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log2_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logaddexp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logaddexp2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_xlogy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_xlogy_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logspace(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_log_softmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__log_softmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__log_softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__logcumsumexp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logcumsumexp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logsumexp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_margin_ranking_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_matmul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_matrix_power(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_matrix_exp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__aminmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_aminmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__compute_linear_combination(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_max(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_amax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_max_pool1d_with_indices(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_max_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_max_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mkldnn_max_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mkldnn_max_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_max_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_max_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_max_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_max_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mean(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nanmean(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_median(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nanmedian(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_min(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_amin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__mps_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mkldnn_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mkldnn_rnn_layer(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_convolution_transpose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_depthwise_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_convolution_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_convolution_add_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_miopen_rnn(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__int_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__convert_weight_to_int4pack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__weight_int4pack_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__convert_weight_to_int4pack_for_cpu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__weight_int4pack_mm_for_cpu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__dyn_quant_pack_4bit_weight(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__dyn_quant_matmul_4bit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__weight_int8pack_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_sparse_matmul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mode(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_multiply(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mv(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mvlgamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_narrow_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_narrow(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_native_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__native_batch_norm_legit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__native_batch_norm_legit_no_training(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_stats(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_elemt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_gather_stats(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_gather_stats_with_counts(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_backward_reduce(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_backward_elemt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_batch_norm_update_stats(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_is_vulkan_available(PyObject* self_, PyObject* args);
static PyObject * THPVariable__nnpack_available(PyObject* self_, PyObject* args);
static PyObject * THPVariable__nnpack_spatial_convolution(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ones(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ones_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_pairwise_distance(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cdist(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__euclidean_dist(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_pdist(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cosine_similarity(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_permute(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_movedim(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_moveaxis(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_adjoint(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_pixel_shuffle(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_pixel_unshuffle(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_channel_shuffle(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_native_channel_shuffle(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__pin_memory(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_pinverse(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_poisson_nll_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rad2deg(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rad2deg_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_deg2rad(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_deg2rad_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_scalar_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rand(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rand_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_randint(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_randint_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_randn(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_randn_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_randperm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ravel(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_reciprocal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_reciprocal_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_neg(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_neg_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_negative(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_negative_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_repeat_interleave(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_reshape(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__mkldnn_reshape(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_round(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_round_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rrelu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rrelu_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_relu_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_prelu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__prelu_kernel(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hardshrink(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rsqrt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rsqrt_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_select(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_selu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_selu_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_celu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_celu_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sigmoid(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sigmoid_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logit_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sin_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sinc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sinc_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sinh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sinh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_detach(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_detach_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_slice_inverse(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_slice_scatter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_select_scatter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diagonal_scatter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_as_strided_scatter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_smm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_softmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__softmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unsafe_split(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_split(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unsafe_split_with_sizes(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_split_with_sizes(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hsplit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_vsplit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dsplit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_squeeze(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sspaddmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__chunk_cat(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_stack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__stack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hstack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_vstack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dstack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_stft(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_istft(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nansum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sqrt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sqrt_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_square(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_square_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_std(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_std_mean(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_prod(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_t(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tan(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tan_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tanh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tanh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tensordot(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_threshold(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_threshold_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tile(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_transpose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__mkldnn_transpose(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__mkldnn_transpose_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_flip(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fliplr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_flipud(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_roll(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rot90(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_trapezoid(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_trapz(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__transform_bias_rescale_qkv(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_tensor_from_mask(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_tensor_from_mask_left_aligned(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_from_padded(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_from_padded_and_nested_example(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_view_from_buffer(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_view_from_buffer_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_view_from_jagged(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_view_from_jagged_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_values(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_values_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_offsets(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_lengths(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_ragged_idx(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_min_seqlen(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_max_seqlen(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_get_jagged_dummy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_compute_contiguous_strides_offsets(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__trilinear(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_triplet_margin_loss(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_trunc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_trunc_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fix(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fix_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__has_compatible_shallow_copy_type(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unique(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unique_dim(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unique_consecutive(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__unique2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unsqueeze(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_vander(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_var(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_var_mean(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_where(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_norm_except_dim(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__weight_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__weight_norm_interface(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_zeros(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__efficientzerotensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_zeros_like(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__standard_gamma_grad(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__standard_gamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__dirichlet_grad(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sample_dirichlet(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_poisson(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_binomial(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_native_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_sum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_csr_sum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_csr_prod(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_log_softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_frexp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_frobenius_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nuclear_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_clone(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_positive(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_resize_as_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_resize_as_sparse_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_zero_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sub(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_subtract(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rsub(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_heaviside(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__addmm_activation(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_grouped_mm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_sparse_coo_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_sparse_compressed_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_sparse_csr_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_sparse_csc_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_sparse_bsr_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__validate_sparse_bsc_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__to_cpu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__coalesce(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hspmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unbind(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__to_sparse_semi_structured(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantize_per_tensor_dynamic(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantize_per_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantize_per_channel(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dequantize(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_q_scale(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_q_zero_point(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_q_per_channel_scales(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_q_per_channel_zero_points(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_q_per_channel_axis(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_int_repr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__make_per_tensor_quantized_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__make_per_channel_quantized_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fake_quantize_per_tensor_affine(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fake_quantize_per_tensor_affine_cachemask_tensor_qparams(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fake_quantize_learnable_per_tensor_affine(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fake_quantize_per_channel_affine(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fake_quantize_learnable_per_channel_affine(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fused_moving_avg_obs_fake_quant(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_moving_avg_obs_fq_helper(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__choose_qparams_per_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__saturate_weight_to_fp16(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_choose_qparams_optimized(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_meshgrid(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cartesian_prod(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_combinations(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_result_type(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_can_cast(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_promote_types(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__lstm_mps(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lstm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gru(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rnn_tanh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rnn_relu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lstm_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gru_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rnn_tanh_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_rnn_relu_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_lstm_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_gru_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_rnn_relu_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantized_rnn_tanh_cell(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__pack_padded_sequence(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__pad_packed_sequence(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_masked_fill(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_masked_scatter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__masked_softmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_put(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_add(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_reduce(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_fill(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_scatter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_scatter_add(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_scatter_reduce(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bitwise_and(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable___and__(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bitwise_or(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable___or__(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bitwise_xor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable___xor__(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable___lshift__(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bitwise_left_shift(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable___rshift__(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bitwise_right_shift(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addbmm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diag(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cross(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_triu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tril(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_tril_indices(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_triu_indices(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_trace(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ne(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_not_equal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_eq(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ge(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_greater_equal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_le(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_less_equal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_greater(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_less(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_take(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_take_along_dim(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_index_select(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_masked_select(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nonzero_static(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_argwhere(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_gather(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addcmul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_addcdiv(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_triangular_solve(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__linalg_check_errors(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_svd(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_swapaxes(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_swapdims(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cholesky(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cholesky_solve(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_cholesky_inverse(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_qr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_geqrf(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_orgqr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ormqr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__lu_with_info(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lu_solve(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lu_unpack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_multinomial(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lgamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_digamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_polygamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_erfinv(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_i0(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_i0_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sign(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_signbit(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_dist(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_atan2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_arctan2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_lerp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_histc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_histogram(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__histogramdd_bin_edges(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__histogramdd_from_bin_cts(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__histogramdd_from_bin_tensors(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_histogramdd(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fmod(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_hypot(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_igamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_igammac(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nextafter(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_remainder(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fmin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_fmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_maximum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_minimum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_quantile(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_nanquantile(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_sort(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_msort(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_argsort(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_topk(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_renorm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_equal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_pow(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_float_power(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_normal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__amp_foreach_non_finite_check_and_unscale_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__amp_update_scale_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_add(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_add_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sub(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sub_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_mul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_mul_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_div(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_div_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_clamp_max(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_clamp_max_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_clamp_min(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_clamp_min_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_maximum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_maximum_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_minimum(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_minimum_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_addcdiv(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_addcdiv_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_addcmul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_addcmul_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_abs(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_abs_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_acos(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_acos_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_asin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_asin_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_atan(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_atan_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_ceil(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_ceil_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_cos(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_cos_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_cosh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_cosh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_erf(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_erf_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_erfc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_erfc_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_exp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_exp_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_expm1(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_expm1_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_floor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_floor_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_frac(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_frac_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_lerp(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_lerp_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_lgamma(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_lgamma_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log10(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log10_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log1p(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log1p_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log2(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_log2_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_max(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_neg(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_neg_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_norm(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_pow(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_pow_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_reciprocal(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_reciprocal_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_round(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_round_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_rsqrt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_rsqrt_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sigmoid(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sigmoid_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sign(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sign_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sin(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sin_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sinh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sinh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sqrt(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_sqrt_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_tan(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_tan_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_tanh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_tanh_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_trunc(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_trunc_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_zero_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foreach_copy_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_bucketize(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_searchsorted(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__convert_indices_from_coo_to_csr(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__convert_indices_from_csr_to_coo(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_mkldnn_adaptive_avg_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__adaptive_avg_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__adaptive_avg_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_column_stack(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isfinite(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isinf(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isposinf(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_isneginf(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__add_batch_dim(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__remove_batch_dim(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__linalg_det(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_det(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__linalg_slogdet(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_slogdet(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_logdet(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__linalg_eigh(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_inverse(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_inner(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_outer(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ger(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__linalg_svd(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__linalg_solve_ex(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_serialization_subcmul(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_parallel_materialize(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_autograd_multiple_dispatch(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_autograd_multiple_dispatch_view(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__test_autograd_multiple_dispatch_view_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_segment_reduce(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_tensor_from_tensor_list(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fw_primal_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__make_dual_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_view_as_real_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_view_as_complex_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__conj_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__neg_view_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_as_strided_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__sparse_broadcast_to_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_diagonal_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_expand_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_permute_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__reshape_alias_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_select_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_detach_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_slice_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_split_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_split_with_sizes_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_squeeze_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_t_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_transpose_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unsqueeze_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__values_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_values_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_crow_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_col_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_ccol_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_row_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unbind_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_view_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_unfold_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable_alias_copy(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_from_padded_tensor(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__nested_tensor_softmax_with_shape(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__safe_softmax(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__transformer_encoder_layer_fwd(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__native_multi_head_attention(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_sdp_choice(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_dot_product_attention_math(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_dot_product_attention_math_for_mps(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_dot_product_flash_attention(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_dot_product_flash_attention_for_cpu(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_dot_product_efficient_attention(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__scaled_dot_product_cudnn_attention(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__triton_scaled_dot_attention(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fill_mem_eff_dropout_mask_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__triton_multi_head_attention(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__foobar(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_adam_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_adamw_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_sgd_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__fused_adagrad_(PyObject* self_, PyObject* args, PyObject* kwargs);
static PyObject * THPVariable__propagate_xla_data(PyObject* self_, PyObject* args, PyObject* kwargs);

static PyMethodDef torch_functions_shard[] = {
  {"_cast_Byte", castPyCFunctionWithKeywords(THPVariable__cast_Byte), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Char", castPyCFunctionWithKeywords(THPVariable__cast_Char), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Double", castPyCFunctionWithKeywords(THPVariable__cast_Double), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Float", castPyCFunctionWithKeywords(THPVariable__cast_Float), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Int", castPyCFunctionWithKeywords(THPVariable__cast_Int), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Long", castPyCFunctionWithKeywords(THPVariable__cast_Long), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Short", castPyCFunctionWithKeywords(THPVariable__cast_Short), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cast_Half", castPyCFunctionWithKeywords(THPVariable__cast_Half), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_make_dual", castPyCFunctionWithKeywords(THPVariable__make_dual), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unpack_dual", castPyCFunctionWithKeywords(THPVariable__unpack_dual), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"align_tensors", castPyCFunctionWithKeywords(THPVariable_align_tensors), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_assert_async", castPyCFunctionWithKeywords(THPVariable__assert_async), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_assert_scalar", castPyCFunctionWithKeywords(THPVariable__assert_scalar), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_functional_assert_scalar", castPyCFunctionWithKeywords(THPVariable__functional_assert_scalar), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_functional_assert_async", castPyCFunctionWithKeywords(THPVariable__functional_assert_async), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_assert_tensor_metadata", castPyCFunctionWithKeywords(THPVariable__assert_tensor_metadata), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_print", castPyCFunctionWithKeywords(THPVariable__print), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sym_constrain_range", castPyCFunctionWithKeywords(THPVariable_sym_constrain_range), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sym_constrain_range_for_size", castPyCFunctionWithKeywords(THPVariable_sym_constrain_range_for_size), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_functional_sym_constrain_range", castPyCFunctionWithKeywords(THPVariable__functional_sym_constrain_range), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_functional_sym_constrain_range_for_size", castPyCFunctionWithKeywords(THPVariable__functional_sym_constrain_range_for_size), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_make_dep_token", castPyCFunctionWithKeywords(THPVariable__make_dep_token), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_use_cudnn_ctc_loss", castPyCFunctionWithKeywords(THPVariable__use_cudnn_ctc_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cudnn_ctc_loss", castPyCFunctionWithKeywords(THPVariable__cudnn_ctc_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_use_cudnn_rnn_flatten_weight", THPVariable__use_cudnn_rnn_flatten_weight, METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cudnn_rnn_flatten_weight", castPyCFunctionWithKeywords(THPVariable__cudnn_rnn_flatten_weight), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cudnn_rnn", castPyCFunctionWithKeywords(THPVariable__cudnn_rnn), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cudnn_init_dropout_state", castPyCFunctionWithKeywords(THPVariable__cudnn_init_dropout_state), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_debug_has_internal_overlap", castPyCFunctionWithKeywords(THPVariable__debug_has_internal_overlap), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_dropout", castPyCFunctionWithKeywords(THPVariable__fused_dropout), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_masked_scale", castPyCFunctionWithKeywords(THPVariable__masked_scale), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"native_dropout", castPyCFunctionWithKeywords(THPVariable_native_dropout), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sobol_engine_draw", castPyCFunctionWithKeywords(THPVariable__sobol_engine_draw), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sobol_engine_ff_", castPyCFunctionWithKeywords(THPVariable__sobol_engine_ff_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sobol_engine_scramble_", castPyCFunctionWithKeywords(THPVariable__sobol_engine_scramble_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sobol_engine_initialize_state_", castPyCFunctionWithKeywords(THPVariable__sobol_engine_initialize_state_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_reshape_from_tensor", castPyCFunctionWithKeywords(THPVariable__reshape_from_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_shape_as_tensor", castPyCFunctionWithKeywords(THPVariable__shape_as_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dropout", castPyCFunctionWithKeywords(THPVariable_dropout), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dropout_", castPyCFunctionWithKeywords(THPVariable_dropout_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"feature_dropout", castPyCFunctionWithKeywords(THPVariable_feature_dropout), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"feature_dropout_", castPyCFunctionWithKeywords(THPVariable_feature_dropout_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"alpha_dropout", castPyCFunctionWithKeywords(THPVariable_alpha_dropout), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"alpha_dropout_", castPyCFunctionWithKeywords(THPVariable_alpha_dropout_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"feature_alpha_dropout", castPyCFunctionWithKeywords(THPVariable_feature_alpha_dropout), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"feature_alpha_dropout_", castPyCFunctionWithKeywords(THPVariable_feature_alpha_dropout_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"abs", castPyCFunctionWithKeywords(THPVariable_abs), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"abs_", castPyCFunctionWithKeywords(THPVariable_abs_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"absolute", castPyCFunctionWithKeywords(THPVariable_absolute), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"angle", castPyCFunctionWithKeywords(THPVariable_angle), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"view_as_real", castPyCFunctionWithKeywords(THPVariable_view_as_real), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"view_as_complex", castPyCFunctionWithKeywords(THPVariable_view_as_complex), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sgn", castPyCFunctionWithKeywords(THPVariable_sgn), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"real", castPyCFunctionWithKeywords(THPVariable_real), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"imag", castPyCFunctionWithKeywords(THPVariable_imag), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_conj", castPyCFunctionWithKeywords(THPVariable__conj), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conj", castPyCFunctionWithKeywords(THPVariable_conj), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_conj_physical", castPyCFunctionWithKeywords(THPVariable__conj_physical), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conj_physical", castPyCFunctionWithKeywords(THPVariable_conj_physical), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conj_physical_", castPyCFunctionWithKeywords(THPVariable_conj_physical_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"resolve_conj", castPyCFunctionWithKeywords(THPVariable_resolve_conj), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"resolve_neg", castPyCFunctionWithKeywords(THPVariable_resolve_neg), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_neg_view", castPyCFunctionWithKeywords(THPVariable__neg_view), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"acos", castPyCFunctionWithKeywords(THPVariable_acos), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"acos_", castPyCFunctionWithKeywords(THPVariable_acos_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arccos", castPyCFunctionWithKeywords(THPVariable_arccos), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arccos_", castPyCFunctionWithKeywords(THPVariable_arccos_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"avg_pool1d", castPyCFunctionWithKeywords(THPVariable_avg_pool1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"adaptive_avg_pool1d", castPyCFunctionWithKeywords(THPVariable_adaptive_avg_pool1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"adaptive_max_pool1d", castPyCFunctionWithKeywords(THPVariable_adaptive_max_pool1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"add", castPyCFunctionWithKeywords(THPVariable_add), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_add_relu", castPyCFunctionWithKeywords(THPVariable__add_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_add_relu_", castPyCFunctionWithKeywords(THPVariable__add_relu_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addmv", castPyCFunctionWithKeywords(THPVariable_addmv), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addmv_", castPyCFunctionWithKeywords(THPVariable_addmv_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addr", castPyCFunctionWithKeywords(THPVariable_addr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"affine_grid_generator", castPyCFunctionWithKeywords(THPVariable_affine_grid_generator), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_is_all_true", castPyCFunctionWithKeywords(THPVariable__is_all_true), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_is_any_true", castPyCFunctionWithKeywords(THPVariable__is_any_true), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_check_tensor", castPyCFunctionWithKeywords(THPVariable__test_check_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_functorch_fallback", castPyCFunctionWithKeywords(THPVariable__test_functorch_fallback), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"all", castPyCFunctionWithKeywords(THPVariable_all), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"allclose", castPyCFunctionWithKeywords(THPVariable_allclose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"any", castPyCFunctionWithKeywords(THPVariable_any), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arange", castPyCFunctionWithKeywords(THPVariable_arange), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_dim_arange", castPyCFunctionWithKeywords(THPVariable__dim_arange), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"argmax", castPyCFunctionWithKeywords(THPVariable_argmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"argmin", castPyCFunctionWithKeywords(THPVariable_argmin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"acosh", castPyCFunctionWithKeywords(THPVariable_acosh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"acosh_", castPyCFunctionWithKeywords(THPVariable_acosh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arccosh", castPyCFunctionWithKeywords(THPVariable_arccosh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arccosh_", castPyCFunctionWithKeywords(THPVariable_arccosh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"asinh", castPyCFunctionWithKeywords(THPVariable_asinh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"asinh_", castPyCFunctionWithKeywords(THPVariable_asinh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arcsinh", castPyCFunctionWithKeywords(THPVariable_arcsinh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arcsinh_", castPyCFunctionWithKeywords(THPVariable_arcsinh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atanh", castPyCFunctionWithKeywords(THPVariable_atanh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atanh_", castPyCFunctionWithKeywords(THPVariable_atanh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arctanh", castPyCFunctionWithKeywords(THPVariable_arctanh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arctanh_", castPyCFunctionWithKeywords(THPVariable_arctanh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"as_strided", castPyCFunctionWithKeywords(THPVariable_as_strided), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"as_strided_", castPyCFunctionWithKeywords(THPVariable_as_strided_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"asin", castPyCFunctionWithKeywords(THPVariable_asin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"asin_", castPyCFunctionWithKeywords(THPVariable_asin_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arcsin", castPyCFunctionWithKeywords(THPVariable_arcsin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arcsin_", castPyCFunctionWithKeywords(THPVariable_arcsin_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atan", castPyCFunctionWithKeywords(THPVariable_atan), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atan_", castPyCFunctionWithKeywords(THPVariable_atan_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arctan", castPyCFunctionWithKeywords(THPVariable_arctan), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arctan_", castPyCFunctionWithKeywords(THPVariable_arctan_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atleast_1d", castPyCFunctionWithKeywords(THPVariable_atleast_1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atleast_2d", castPyCFunctionWithKeywords(THPVariable_atleast_2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atleast_3d", castPyCFunctionWithKeywords(THPVariable_atleast_3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"baddbmm", castPyCFunctionWithKeywords(THPVariable_baddbmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bartlett_window", castPyCFunctionWithKeywords(THPVariable_bartlett_window), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm", castPyCFunctionWithKeywords(THPVariable_batch_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_batch_norm", castPyCFunctionWithKeywords(THPVariable_quantized_batch_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_batch_norm_impl_index", castPyCFunctionWithKeywords(THPVariable__batch_norm_impl_index), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bernoulli", castPyCFunctionWithKeywords(THPVariable_bernoulli), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bilinear", castPyCFunctionWithKeywords(THPVariable_bilinear), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"binary_cross_entropy_with_logits", castPyCFunctionWithKeywords(THPVariable_binary_cross_entropy_with_logits), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bincount", castPyCFunctionWithKeywords(THPVariable_bincount), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bitwise_not", castPyCFunctionWithKeywords(THPVariable_bitwise_not), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"copysign", castPyCFunctionWithKeywords(THPVariable_copysign), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_lazy_clone", castPyCFunctionWithKeywords(THPVariable__lazy_clone), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logical_not", castPyCFunctionWithKeywords(THPVariable_logical_not), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logical_xor", castPyCFunctionWithKeywords(THPVariable_logical_xor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logical_and", castPyCFunctionWithKeywords(THPVariable_logical_and), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logical_or", castPyCFunctionWithKeywords(THPVariable_logical_or), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"blackman_window", castPyCFunctionWithKeywords(THPVariable_blackman_window), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bmm", castPyCFunctionWithKeywords(THPVariable_bmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"broadcast_tensors", castPyCFunctionWithKeywords(THPVariable_broadcast_tensors), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"broadcast_to", castPyCFunctionWithKeywords(THPVariable_broadcast_to), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_broadcast_to", castPyCFunctionWithKeywords(THPVariable__sparse_broadcast_to), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cat", castPyCFunctionWithKeywords(THPVariable_cat), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"concat", castPyCFunctionWithKeywords(THPVariable_concat), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"concatenate", castPyCFunctionWithKeywords(THPVariable_concatenate), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"block_diag", castPyCFunctionWithKeywords(THPVariable_block_diag), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ceil", castPyCFunctionWithKeywords(THPVariable_ceil), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ceil_", castPyCFunctionWithKeywords(THPVariable_ceil_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"chain_matmul", castPyCFunctionWithKeywords(THPVariable_chain_matmul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unsafe_chunk", castPyCFunctionWithKeywords(THPVariable_unsafe_chunk), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"chunk", castPyCFunctionWithKeywords(THPVariable_chunk), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tensor_split", castPyCFunctionWithKeywords(THPVariable_tensor_split), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clamp", castPyCFunctionWithKeywords(THPVariable_clamp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clamp_", castPyCFunctionWithKeywords(THPVariable_clamp_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clamp_max", castPyCFunctionWithKeywords(THPVariable_clamp_max), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clamp_max_", castPyCFunctionWithKeywords(THPVariable_clamp_max_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clamp_min", castPyCFunctionWithKeywords(THPVariable_clamp_min), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clamp_min_", castPyCFunctionWithKeywords(THPVariable_clamp_min_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clip", castPyCFunctionWithKeywords(THPVariable_clip), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clip_", castPyCFunctionWithKeywords(THPVariable_clip_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_is_acceptable", castPyCFunctionWithKeywords(THPVariable_cudnn_is_acceptable), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"complex", castPyCFunctionWithKeywords(THPVariable_complex), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"polar", castPyCFunctionWithKeywords(THPVariable_polar), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"constant_pad_nd", castPyCFunctionWithKeywords(THPVariable_constant_pad_nd), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"convolution", castPyCFunctionWithKeywords(THPVariable_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_convolution", castPyCFunctionWithKeywords(THPVariable__convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_convolution_mode", castPyCFunctionWithKeywords(THPVariable__convolution_mode), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv1d", castPyCFunctionWithKeywords(THPVariable_conv1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv2d", castPyCFunctionWithKeywords(THPVariable_conv2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv3d", castPyCFunctionWithKeywords(THPVariable_conv3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv_tbc", castPyCFunctionWithKeywords(THPVariable_conv_tbc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv_transpose1d", castPyCFunctionWithKeywords(THPVariable_conv_transpose1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv_transpose2d", castPyCFunctionWithKeywords(THPVariable_conv_transpose2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"conv_transpose3d", castPyCFunctionWithKeywords(THPVariable_conv_transpose3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_copy_from", castPyCFunctionWithKeywords(THPVariable__copy_from), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_copy_from_and_resize", castPyCFunctionWithKeywords(THPVariable__copy_from_and_resize), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cos", castPyCFunctionWithKeywords(THPVariable_cos), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cos_", castPyCFunctionWithKeywords(THPVariable_cos_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cosh", castPyCFunctionWithKeywords(THPVariable_cosh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cosh_", castPyCFunctionWithKeywords(THPVariable_cosh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cosine_embedding_loss", castPyCFunctionWithKeywords(THPVariable_cosine_embedding_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"count_nonzero", castPyCFunctionWithKeywords(THPVariable_count_nonzero), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cov", castPyCFunctionWithKeywords(THPVariable_cov), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"corrcoef", castPyCFunctionWithKeywords(THPVariable_corrcoef), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_affine_grid_generator", castPyCFunctionWithKeywords(THPVariable_cudnn_affine_grid_generator), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_batch_norm", castPyCFunctionWithKeywords(THPVariable_cudnn_batch_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_convolution", castPyCFunctionWithKeywords(THPVariable_cudnn_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_convolution_transpose", castPyCFunctionWithKeywords(THPVariable_cudnn_convolution_transpose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_mps_convolution_transpose", castPyCFunctionWithKeywords(THPVariable__mps_convolution_transpose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_convolution_relu", castPyCFunctionWithKeywords(THPVariable_cudnn_convolution_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_convolution_add_relu", castPyCFunctionWithKeywords(THPVariable_cudnn_convolution_add_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cudnn_grid_sampler", castPyCFunctionWithKeywords(THPVariable_cudnn_grid_sampler), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cummax", castPyCFunctionWithKeywords(THPVariable_cummax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cummax_helper", castPyCFunctionWithKeywords(THPVariable__cummax_helper), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cummin", castPyCFunctionWithKeywords(THPVariable_cummin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cummin_helper", castPyCFunctionWithKeywords(THPVariable__cummin_helper), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cumprod", castPyCFunctionWithKeywords(THPVariable_cumprod), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cumsum", castPyCFunctionWithKeywords(THPVariable_cumsum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cumulative_trapezoid", castPyCFunctionWithKeywords(THPVariable_cumulative_trapezoid), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ctc_loss", castPyCFunctionWithKeywords(THPVariable_ctc_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_ctc_loss", castPyCFunctionWithKeywords(THPVariable__ctc_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diag_embed", castPyCFunctionWithKeywords(THPVariable_diag_embed), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diagflat", castPyCFunctionWithKeywords(THPVariable_diagflat), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diagonal", castPyCFunctionWithKeywords(THPVariable_diagonal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diff", castPyCFunctionWithKeywords(THPVariable_diff), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gradient", castPyCFunctionWithKeywords(THPVariable_gradient), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"div", castPyCFunctionWithKeywords(THPVariable_div), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"divide", castPyCFunctionWithKeywords(THPVariable_divide), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"true_divide", castPyCFunctionWithKeywords(THPVariable_true_divide), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dot", castPyCFunctionWithKeywords(THPVariable_dot), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"vdot", castPyCFunctionWithKeywords(THPVariable_vdot), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"einsum", castPyCFunctionWithKeywords(THPVariable_einsum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"embedding", castPyCFunctionWithKeywords(THPVariable_embedding), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"embedding_renorm_", castPyCFunctionWithKeywords(THPVariable_embedding_renorm_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_embedding_bag_forward_only", castPyCFunctionWithKeywords(THPVariable__embedding_bag_forward_only), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_rowwise_prune", castPyCFunctionWithKeywords(THPVariable__rowwise_prune), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"row_stack", castPyCFunctionWithKeywords(THPVariable_row_stack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"embedding_bag", castPyCFunctionWithKeywords(THPVariable_embedding_bag), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_embedding_bag", castPyCFunctionWithKeywords(THPVariable__embedding_bag), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"empty", castPyCFunctionWithKeywords(THPVariable_empty), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"empty_permuted", castPyCFunctionWithKeywords(THPVariable_empty_permuted), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_empty_affine_quantized", castPyCFunctionWithKeywords(THPVariable__empty_affine_quantized), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_empty_per_channel_affine_quantized", castPyCFunctionWithKeywords(THPVariable__empty_per_channel_affine_quantized), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_resize_output_", castPyCFunctionWithKeywords(THPVariable__resize_output_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"empty_quantized", castPyCFunctionWithKeywords(THPVariable_empty_quantized), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"empty_like", castPyCFunctionWithKeywords(THPVariable_empty_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"empty_strided", castPyCFunctionWithKeywords(THPVariable_empty_strided), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"erf", castPyCFunctionWithKeywords(THPVariable_erf), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"erf_", castPyCFunctionWithKeywords(THPVariable_erf_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"erfc", castPyCFunctionWithKeywords(THPVariable_erfc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"erfc_", castPyCFunctionWithKeywords(THPVariable_erfc_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"exp", castPyCFunctionWithKeywords(THPVariable_exp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"exp_", castPyCFunctionWithKeywords(THPVariable_exp_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"exp2", castPyCFunctionWithKeywords(THPVariable_exp2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"exp2_", castPyCFunctionWithKeywords(THPVariable_exp2_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"expm1", castPyCFunctionWithKeywords(THPVariable_expm1), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"expm1_", castPyCFunctionWithKeywords(THPVariable_expm1_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"eye", castPyCFunctionWithKeywords(THPVariable_eye), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"flatten", castPyCFunctionWithKeywords(THPVariable_flatten), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unflatten", castPyCFunctionWithKeywords(THPVariable_unflatten), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fill", castPyCFunctionWithKeywords(THPVariable_fill), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fill_", castPyCFunctionWithKeywords(THPVariable_fill_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"floor", castPyCFunctionWithKeywords(THPVariable_floor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"floor_", castPyCFunctionWithKeywords(THPVariable_floor_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"floor_divide", castPyCFunctionWithKeywords(THPVariable_floor_divide), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"frac", castPyCFunctionWithKeywords(THPVariable_frac), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"frac_", castPyCFunctionWithKeywords(THPVariable_frac_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"full", castPyCFunctionWithKeywords(THPVariable_full), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"full_like", castPyCFunctionWithKeywords(THPVariable_full_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"from_file", castPyCFunctionWithKeywords(THPVariable_from_file), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gcd", castPyCFunctionWithKeywords(THPVariable_gcd), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gcd_", castPyCFunctionWithKeywords(THPVariable_gcd_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lcm", castPyCFunctionWithKeywords(THPVariable_lcm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lcm_", castPyCFunctionWithKeywords(THPVariable_lcm_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"grid_sampler", castPyCFunctionWithKeywords(THPVariable_grid_sampler), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"grid_sampler_2d", castPyCFunctionWithKeywords(THPVariable_grid_sampler_2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_grid_sampler_2d_cpu_fallback", castPyCFunctionWithKeywords(THPVariable__grid_sampler_2d_cpu_fallback), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"grid_sampler_3d", castPyCFunctionWithKeywords(THPVariable_grid_sampler_3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hann_window", castPyCFunctionWithKeywords(THPVariable_hann_window), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hamming_window", castPyCFunctionWithKeywords(THPVariable_hamming_window), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"kaiser_window", castPyCFunctionWithKeywords(THPVariable_kaiser_window), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hinge_embedding_loss", castPyCFunctionWithKeywords(THPVariable_hinge_embedding_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"group_norm", castPyCFunctionWithKeywords(THPVariable_group_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"native_group_norm", castPyCFunctionWithKeywords(THPVariable_native_group_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fft_r2c", castPyCFunctionWithKeywords(THPVariable__fft_r2c), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fft_c2r", castPyCFunctionWithKeywords(THPVariable__fft_c2r), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fft_c2c", castPyCFunctionWithKeywords(THPVariable__fft_c2c), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_compressed_sparse_indices", castPyCFunctionWithKeywords(THPVariable__validate_compressed_sparse_indices), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cufft_get_plan_cache_size", castPyCFunctionWithKeywords(THPVariable__cufft_get_plan_cache_size), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cufft_get_plan_cache_max_size", castPyCFunctionWithKeywords(THPVariable__cufft_get_plan_cache_max_size), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cufft_set_plan_cache_max_size", castPyCFunctionWithKeywords(THPVariable__cufft_set_plan_cache_max_size), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cufft_clear_plan_cache", castPyCFunctionWithKeywords(THPVariable__cufft_clear_plan_cache), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unsafe_index", castPyCFunctionWithKeywords(THPVariable__unsafe_index), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unsafe_masked_index", castPyCFunctionWithKeywords(THPVariable__unsafe_masked_index), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unsafe_masked_index_put_accumulate", castPyCFunctionWithKeywords(THPVariable__unsafe_masked_index_put_accumulate), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_copy", castPyCFunctionWithKeywords(THPVariable_index_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_put_", castPyCFunctionWithKeywords(THPVariable_index_put_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_put", castPyCFunctionWithKeywords(THPVariable_index_put), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unsafe_index_put", castPyCFunctionWithKeywords(THPVariable__unsafe_index_put), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_index_put_impl_", castPyCFunctionWithKeywords(THPVariable__index_put_impl_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"instance_norm", castPyCFunctionWithKeywords(THPVariable_instance_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isclose", castPyCFunctionWithKeywords(THPVariable_isclose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isin", castPyCFunctionWithKeywords(THPVariable_isin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isnan", castPyCFunctionWithKeywords(THPVariable_isnan), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_distributed", castPyCFunctionWithKeywords(THPVariable_is_distributed), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_floating_point", castPyCFunctionWithKeywords(THPVariable_is_floating_point), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_complex", castPyCFunctionWithKeywords(THPVariable_is_complex), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_conj", castPyCFunctionWithKeywords(THPVariable_is_conj), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_is_zerotensor", castPyCFunctionWithKeywords(THPVariable__is_zerotensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_neg", castPyCFunctionWithKeywords(THPVariable_is_neg), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isreal", castPyCFunctionWithKeywords(THPVariable_isreal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_nonzero", castPyCFunctionWithKeywords(THPVariable_is_nonzero), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_same_size", castPyCFunctionWithKeywords(THPVariable_is_same_size), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_signed", castPyCFunctionWithKeywords(THPVariable_is_signed), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_inference", castPyCFunctionWithKeywords(THPVariable_is_inference), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"kl_div", castPyCFunctionWithKeywords(THPVariable_kl_div), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"kron", castPyCFunctionWithKeywords(THPVariable_kron), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"kthvalue", castPyCFunctionWithKeywords(THPVariable_kthvalue), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"layer_norm", castPyCFunctionWithKeywords(THPVariable_layer_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"native_layer_norm", castPyCFunctionWithKeywords(THPVariable_native_layer_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rms_norm", castPyCFunctionWithKeywords(THPVariable_rms_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nan_to_num", castPyCFunctionWithKeywords(THPVariable_nan_to_num), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nan_to_num_", castPyCFunctionWithKeywords(THPVariable_nan_to_num_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mkldnn_linear_backward_weights", castPyCFunctionWithKeywords(THPVariable_mkldnn_linear_backward_weights), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cslt_compress", castPyCFunctionWithKeywords(THPVariable__cslt_compress), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cslt_sparse_mm", castPyCFunctionWithKeywords(THPVariable__cslt_sparse_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_cslt_sparse_mm_search", castPyCFunctionWithKeywords(THPVariable__cslt_sparse_mm_search), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_semi_structured_tile", castPyCFunctionWithKeywords(THPVariable__sparse_semi_structured_tile), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_semi_structured_apply", castPyCFunctionWithKeywords(THPVariable__sparse_semi_structured_apply), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_semi_structured_apply_dense", castPyCFunctionWithKeywords(THPVariable__sparse_semi_structured_apply_dense), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_semi_structured_linear", castPyCFunctionWithKeywords(THPVariable__sparse_semi_structured_linear), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_semi_structured_mm", castPyCFunctionWithKeywords(THPVariable__sparse_semi_structured_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_semi_structured_addmm", castPyCFunctionWithKeywords(THPVariable__sparse_semi_structured_addmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_mixed_dtypes_linear", castPyCFunctionWithKeywords(THPVariable__mixed_dtypes_linear), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_linear_int8_weight_fp32_activation", castPyCFunctionWithKeywords(THPVariable_fbgemm_linear_int8_weight_fp32_activation), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_linear_int8_weight", castPyCFunctionWithKeywords(THPVariable_fbgemm_linear_int8_weight), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_linear_quantize_weight", castPyCFunctionWithKeywords(THPVariable_fbgemm_linear_quantize_weight), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_pack_gemm_matrix_fp16", castPyCFunctionWithKeywords(THPVariable_fbgemm_pack_gemm_matrix_fp16), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_wrapped_linear_prepack", castPyCFunctionWithKeywords(THPVariable__wrapped_linear_prepack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_wrapped_quantized_linear_prepacked", castPyCFunctionWithKeywords(THPVariable__wrapped_quantized_linear_prepacked), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_linear_fp16_weight_fp32_activation", castPyCFunctionWithKeywords(THPVariable_fbgemm_linear_fp16_weight_fp32_activation), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_linear_fp16_weight", castPyCFunctionWithKeywords(THPVariable_fbgemm_linear_fp16_weight), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fbgemm_pack_quantized_matrix", castPyCFunctionWithKeywords(THPVariable_fbgemm_pack_quantized_matrix), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ldexp", castPyCFunctionWithKeywords(THPVariable_ldexp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ldexp_", castPyCFunctionWithKeywords(THPVariable_ldexp_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"linspace", castPyCFunctionWithKeywords(THPVariable_linspace), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log", castPyCFunctionWithKeywords(THPVariable_log), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log_", castPyCFunctionWithKeywords(THPVariable_log_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log10", castPyCFunctionWithKeywords(THPVariable_log10), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log10_", castPyCFunctionWithKeywords(THPVariable_log10_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log1p", castPyCFunctionWithKeywords(THPVariable_log1p), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log1p_", castPyCFunctionWithKeywords(THPVariable_log1p_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log2", castPyCFunctionWithKeywords(THPVariable_log2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log2_", castPyCFunctionWithKeywords(THPVariable_log2_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logaddexp", castPyCFunctionWithKeywords(THPVariable_logaddexp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logaddexp2", castPyCFunctionWithKeywords(THPVariable_logaddexp2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"xlogy", castPyCFunctionWithKeywords(THPVariable_xlogy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"xlogy_", castPyCFunctionWithKeywords(THPVariable_xlogy_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logspace", castPyCFunctionWithKeywords(THPVariable_logspace), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"log_softmax", castPyCFunctionWithKeywords(THPVariable_log_softmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_log_softmax", castPyCFunctionWithKeywords(THPVariable__log_softmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_log_softmax_backward_data", castPyCFunctionWithKeywords(THPVariable__log_softmax_backward_data), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_logcumsumexp", castPyCFunctionWithKeywords(THPVariable__logcumsumexp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logcumsumexp", castPyCFunctionWithKeywords(THPVariable_logcumsumexp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logsumexp", castPyCFunctionWithKeywords(THPVariable_logsumexp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"margin_ranking_loss", castPyCFunctionWithKeywords(THPVariable_margin_ranking_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"matmul", castPyCFunctionWithKeywords(THPVariable_matmul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"matrix_power", castPyCFunctionWithKeywords(THPVariable_matrix_power), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"matrix_exp", castPyCFunctionWithKeywords(THPVariable_matrix_exp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_aminmax", castPyCFunctionWithKeywords(THPVariable__aminmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"aminmax", castPyCFunctionWithKeywords(THPVariable_aminmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_compute_linear_combination", castPyCFunctionWithKeywords(THPVariable__compute_linear_combination), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"max", castPyCFunctionWithKeywords(THPVariable_max), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"amax", castPyCFunctionWithKeywords(THPVariable_amax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"max_pool1d_with_indices", castPyCFunctionWithKeywords(THPVariable_max_pool1d_with_indices), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"max_pool1d", castPyCFunctionWithKeywords(THPVariable_max_pool1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"max_pool2d", castPyCFunctionWithKeywords(THPVariable_max_pool2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mkldnn_max_pool2d", castPyCFunctionWithKeywords(THPVariable_mkldnn_max_pool2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mkldnn_max_pool3d", castPyCFunctionWithKeywords(THPVariable_mkldnn_max_pool3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_max_pool1d", castPyCFunctionWithKeywords(THPVariable_quantized_max_pool1d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_max_pool2d", castPyCFunctionWithKeywords(THPVariable_quantized_max_pool2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_max_pool3d", castPyCFunctionWithKeywords(THPVariable_quantized_max_pool3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"max_pool3d", castPyCFunctionWithKeywords(THPVariable_max_pool3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mean", castPyCFunctionWithKeywords(THPVariable_mean), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nanmean", castPyCFunctionWithKeywords(THPVariable_nanmean), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"median", castPyCFunctionWithKeywords(THPVariable_median), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nanmedian", castPyCFunctionWithKeywords(THPVariable_nanmedian), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"min", castPyCFunctionWithKeywords(THPVariable_min), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"amin", castPyCFunctionWithKeywords(THPVariable_amin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_mps_convolution", castPyCFunctionWithKeywords(THPVariable__mps_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mkldnn_convolution", castPyCFunctionWithKeywords(THPVariable_mkldnn_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mkldnn_rnn_layer", castPyCFunctionWithKeywords(THPVariable_mkldnn_rnn_layer), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_batch_norm", castPyCFunctionWithKeywords(THPVariable_miopen_batch_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_convolution", castPyCFunctionWithKeywords(THPVariable_miopen_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_convolution_transpose", castPyCFunctionWithKeywords(THPVariable_miopen_convolution_transpose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_depthwise_convolution", castPyCFunctionWithKeywords(THPVariable_miopen_depthwise_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_convolution_relu", castPyCFunctionWithKeywords(THPVariable_miopen_convolution_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_convolution_add_relu", castPyCFunctionWithKeywords(THPVariable_miopen_convolution_add_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"miopen_rnn", castPyCFunctionWithKeywords(THPVariable_miopen_rnn), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mm", castPyCFunctionWithKeywords(THPVariable_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_int_mm", castPyCFunctionWithKeywords(THPVariable__int_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_convert_weight_to_int4pack", castPyCFunctionWithKeywords(THPVariable__convert_weight_to_int4pack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_weight_int4pack_mm", castPyCFunctionWithKeywords(THPVariable__weight_int4pack_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_convert_weight_to_int4pack_for_cpu", castPyCFunctionWithKeywords(THPVariable__convert_weight_to_int4pack_for_cpu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_weight_int4pack_mm_for_cpu", castPyCFunctionWithKeywords(THPVariable__weight_int4pack_mm_for_cpu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_dyn_quant_pack_4bit_weight", castPyCFunctionWithKeywords(THPVariable__dyn_quant_pack_4bit_weight), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_dyn_quant_matmul_4bit", castPyCFunctionWithKeywords(THPVariable__dyn_quant_matmul_4bit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_weight_int8pack_mm", castPyCFunctionWithKeywords(THPVariable__weight_int8pack_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_sparse_matmul", castPyCFunctionWithKeywords(THPVariable__sparse_sparse_matmul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mode", castPyCFunctionWithKeywords(THPVariable_mode), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mul", castPyCFunctionWithKeywords(THPVariable_mul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"multiply", castPyCFunctionWithKeywords(THPVariable_multiply), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mv", castPyCFunctionWithKeywords(THPVariable_mv), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mvlgamma", castPyCFunctionWithKeywords(THPVariable_mvlgamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"narrow_copy", castPyCFunctionWithKeywords(THPVariable_narrow_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"narrow", castPyCFunctionWithKeywords(THPVariable_narrow), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"native_batch_norm", castPyCFunctionWithKeywords(THPVariable_native_batch_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_native_batch_norm_legit", castPyCFunctionWithKeywords(THPVariable__native_batch_norm_legit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_native_batch_norm_legit_no_training", castPyCFunctionWithKeywords(THPVariable__native_batch_norm_legit_no_training), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_stats", castPyCFunctionWithKeywords(THPVariable_batch_norm_stats), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_elemt", castPyCFunctionWithKeywords(THPVariable_batch_norm_elemt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_gather_stats", castPyCFunctionWithKeywords(THPVariable_batch_norm_gather_stats), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_gather_stats_with_counts", castPyCFunctionWithKeywords(THPVariable_batch_norm_gather_stats_with_counts), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_backward_reduce", castPyCFunctionWithKeywords(THPVariable_batch_norm_backward_reduce), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_backward_elemt", castPyCFunctionWithKeywords(THPVariable_batch_norm_backward_elemt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"batch_norm_update_stats", castPyCFunctionWithKeywords(THPVariable_batch_norm_update_stats), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"is_vulkan_available", THPVariable_is_vulkan_available, METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nnpack_available", THPVariable__nnpack_available, METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nnpack_spatial_convolution", castPyCFunctionWithKeywords(THPVariable__nnpack_spatial_convolution), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ones", castPyCFunctionWithKeywords(THPVariable_ones), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ones_like", castPyCFunctionWithKeywords(THPVariable_ones_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"pairwise_distance", castPyCFunctionWithKeywords(THPVariable_pairwise_distance), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cdist", castPyCFunctionWithKeywords(THPVariable_cdist), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_euclidean_dist", castPyCFunctionWithKeywords(THPVariable__euclidean_dist), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"pdist", castPyCFunctionWithKeywords(THPVariable_pdist), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cosine_similarity", castPyCFunctionWithKeywords(THPVariable_cosine_similarity), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"permute", castPyCFunctionWithKeywords(THPVariable_permute), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"movedim", castPyCFunctionWithKeywords(THPVariable_movedim), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"moveaxis", castPyCFunctionWithKeywords(THPVariable_moveaxis), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"adjoint", castPyCFunctionWithKeywords(THPVariable_adjoint), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"pixel_shuffle", castPyCFunctionWithKeywords(THPVariable_pixel_shuffle), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"pixel_unshuffle", castPyCFunctionWithKeywords(THPVariable_pixel_unshuffle), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"channel_shuffle", castPyCFunctionWithKeywords(THPVariable_channel_shuffle), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"native_channel_shuffle", castPyCFunctionWithKeywords(THPVariable_native_channel_shuffle), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_pin_memory", castPyCFunctionWithKeywords(THPVariable__pin_memory), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"pinverse", castPyCFunctionWithKeywords(THPVariable_pinverse), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"poisson_nll_loss", castPyCFunctionWithKeywords(THPVariable_poisson_nll_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rad2deg", castPyCFunctionWithKeywords(THPVariable_rad2deg), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rad2deg_", castPyCFunctionWithKeywords(THPVariable_rad2deg_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"deg2rad", castPyCFunctionWithKeywords(THPVariable_deg2rad), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"deg2rad_", castPyCFunctionWithKeywords(THPVariable_deg2rad_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"scalar_tensor", castPyCFunctionWithKeywords(THPVariable_scalar_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rand", castPyCFunctionWithKeywords(THPVariable_rand), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rand_like", castPyCFunctionWithKeywords(THPVariable_rand_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"randint", castPyCFunctionWithKeywords(THPVariable_randint), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"randint_like", castPyCFunctionWithKeywords(THPVariable_randint_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"randn", castPyCFunctionWithKeywords(THPVariable_randn), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"randn_like", castPyCFunctionWithKeywords(THPVariable_randn_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"randperm", castPyCFunctionWithKeywords(THPVariable_randperm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ravel", castPyCFunctionWithKeywords(THPVariable_ravel), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"reciprocal", castPyCFunctionWithKeywords(THPVariable_reciprocal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"reciprocal_", castPyCFunctionWithKeywords(THPVariable_reciprocal_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"neg", castPyCFunctionWithKeywords(THPVariable_neg), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"neg_", castPyCFunctionWithKeywords(THPVariable_neg_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"negative", castPyCFunctionWithKeywords(THPVariable_negative), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"negative_", castPyCFunctionWithKeywords(THPVariable_negative_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"repeat_interleave", castPyCFunctionWithKeywords(THPVariable_repeat_interleave), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"reshape", castPyCFunctionWithKeywords(THPVariable_reshape), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_mkldnn_reshape", castPyCFunctionWithKeywords(THPVariable__mkldnn_reshape), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"round", castPyCFunctionWithKeywords(THPVariable_round), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"round_", castPyCFunctionWithKeywords(THPVariable_round_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rrelu", castPyCFunctionWithKeywords(THPVariable_rrelu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rrelu_", castPyCFunctionWithKeywords(THPVariable_rrelu_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"relu", castPyCFunctionWithKeywords(THPVariable_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"relu_", castPyCFunctionWithKeywords(THPVariable_relu_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"prelu", castPyCFunctionWithKeywords(THPVariable_prelu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_prelu_kernel", castPyCFunctionWithKeywords(THPVariable__prelu_kernel), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hardshrink", castPyCFunctionWithKeywords(THPVariable_hardshrink), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rsqrt", castPyCFunctionWithKeywords(THPVariable_rsqrt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rsqrt_", castPyCFunctionWithKeywords(THPVariable_rsqrt_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"select", castPyCFunctionWithKeywords(THPVariable_select), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"selu", castPyCFunctionWithKeywords(THPVariable_selu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"selu_", castPyCFunctionWithKeywords(THPVariable_selu_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"celu", castPyCFunctionWithKeywords(THPVariable_celu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"celu_", castPyCFunctionWithKeywords(THPVariable_celu_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sigmoid", castPyCFunctionWithKeywords(THPVariable_sigmoid), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sigmoid_", castPyCFunctionWithKeywords(THPVariable_sigmoid_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logit", castPyCFunctionWithKeywords(THPVariable_logit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logit_", castPyCFunctionWithKeywords(THPVariable_logit_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sin", castPyCFunctionWithKeywords(THPVariable_sin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sin_", castPyCFunctionWithKeywords(THPVariable_sin_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sinc", castPyCFunctionWithKeywords(THPVariable_sinc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sinc_", castPyCFunctionWithKeywords(THPVariable_sinc_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sinh", castPyCFunctionWithKeywords(THPVariable_sinh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sinh_", castPyCFunctionWithKeywords(THPVariable_sinh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"detach", castPyCFunctionWithKeywords(THPVariable_detach), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"detach_", castPyCFunctionWithKeywords(THPVariable_detach_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"slice_inverse", castPyCFunctionWithKeywords(THPVariable_slice_inverse), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"slice_scatter", castPyCFunctionWithKeywords(THPVariable_slice_scatter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"select_scatter", castPyCFunctionWithKeywords(THPVariable_select_scatter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diagonal_scatter", castPyCFunctionWithKeywords(THPVariable_diagonal_scatter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"as_strided_scatter", castPyCFunctionWithKeywords(THPVariable_as_strided_scatter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"smm", castPyCFunctionWithKeywords(THPVariable_smm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"softmax", castPyCFunctionWithKeywords(THPVariable_softmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_softmax", castPyCFunctionWithKeywords(THPVariable__softmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_softmax_backward_data", castPyCFunctionWithKeywords(THPVariable__softmax_backward_data), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unsafe_split", castPyCFunctionWithKeywords(THPVariable_unsafe_split), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"split", castPyCFunctionWithKeywords(THPVariable_split), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unsafe_split_with_sizes", castPyCFunctionWithKeywords(THPVariable_unsafe_split_with_sizes), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"split_with_sizes", castPyCFunctionWithKeywords(THPVariable_split_with_sizes), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hsplit", castPyCFunctionWithKeywords(THPVariable_hsplit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"vsplit", castPyCFunctionWithKeywords(THPVariable_vsplit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dsplit", castPyCFunctionWithKeywords(THPVariable_dsplit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"squeeze", castPyCFunctionWithKeywords(THPVariable_squeeze), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sspaddmm", castPyCFunctionWithKeywords(THPVariable_sspaddmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_chunk_cat", castPyCFunctionWithKeywords(THPVariable__chunk_cat), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"stack", castPyCFunctionWithKeywords(THPVariable_stack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_stack", castPyCFunctionWithKeywords(THPVariable__stack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hstack", castPyCFunctionWithKeywords(THPVariable_hstack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"vstack", castPyCFunctionWithKeywords(THPVariable_vstack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dstack", castPyCFunctionWithKeywords(THPVariable_dstack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"stft", castPyCFunctionWithKeywords(THPVariable_stft), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"istft", castPyCFunctionWithKeywords(THPVariable_istft), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sum", castPyCFunctionWithKeywords(THPVariable_sum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nansum", castPyCFunctionWithKeywords(THPVariable_nansum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sqrt", castPyCFunctionWithKeywords(THPVariable_sqrt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sqrt_", castPyCFunctionWithKeywords(THPVariable_sqrt_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"square", castPyCFunctionWithKeywords(THPVariable_square), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"square_", castPyCFunctionWithKeywords(THPVariable_square_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"std", castPyCFunctionWithKeywords(THPVariable_std), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"std_mean", castPyCFunctionWithKeywords(THPVariable_std_mean), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"prod", castPyCFunctionWithKeywords(THPVariable_prod), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"t", castPyCFunctionWithKeywords(THPVariable_t), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tan", castPyCFunctionWithKeywords(THPVariable_tan), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tan_", castPyCFunctionWithKeywords(THPVariable_tan_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tanh", castPyCFunctionWithKeywords(THPVariable_tanh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tanh_", castPyCFunctionWithKeywords(THPVariable_tanh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tensordot", castPyCFunctionWithKeywords(THPVariable_tensordot), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"threshold", castPyCFunctionWithKeywords(THPVariable_threshold), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"threshold_", castPyCFunctionWithKeywords(THPVariable_threshold_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tile", castPyCFunctionWithKeywords(THPVariable_tile), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"transpose", castPyCFunctionWithKeywords(THPVariable_transpose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_mkldnn_transpose", castPyCFunctionWithKeywords(THPVariable__mkldnn_transpose), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_mkldnn_transpose_", castPyCFunctionWithKeywords(THPVariable__mkldnn_transpose_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"flip", castPyCFunctionWithKeywords(THPVariable_flip), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fliplr", castPyCFunctionWithKeywords(THPVariable_fliplr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"flipud", castPyCFunctionWithKeywords(THPVariable_flipud), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"roll", castPyCFunctionWithKeywords(THPVariable_roll), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rot90", castPyCFunctionWithKeywords(THPVariable_rot90), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"trapezoid", castPyCFunctionWithKeywords(THPVariable_trapezoid), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"trapz", castPyCFunctionWithKeywords(THPVariable_trapz), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_transform_bias_rescale_qkv", castPyCFunctionWithKeywords(THPVariable__transform_bias_rescale_qkv), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_tensor_from_mask", castPyCFunctionWithKeywords(THPVariable__nested_tensor_from_mask), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_tensor_from_mask_left_aligned", castPyCFunctionWithKeywords(THPVariable__nested_tensor_from_mask_left_aligned), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_from_padded", castPyCFunctionWithKeywords(THPVariable__nested_from_padded), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_from_padded_and_nested_example", castPyCFunctionWithKeywords(THPVariable__nested_from_padded_and_nested_example), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_view_from_buffer", castPyCFunctionWithKeywords(THPVariable__nested_view_from_buffer), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_view_from_buffer_copy", castPyCFunctionWithKeywords(THPVariable__nested_view_from_buffer_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_view_from_jagged", castPyCFunctionWithKeywords(THPVariable__nested_view_from_jagged), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_view_from_jagged_copy", castPyCFunctionWithKeywords(THPVariable__nested_view_from_jagged_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_values", castPyCFunctionWithKeywords(THPVariable__nested_get_values), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_values_copy", castPyCFunctionWithKeywords(THPVariable__nested_get_values_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_offsets", castPyCFunctionWithKeywords(THPVariable__nested_get_offsets), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_lengths", castPyCFunctionWithKeywords(THPVariable__nested_get_lengths), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_ragged_idx", castPyCFunctionWithKeywords(THPVariable__nested_get_ragged_idx), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_min_seqlen", castPyCFunctionWithKeywords(THPVariable__nested_get_min_seqlen), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_max_seqlen", castPyCFunctionWithKeywords(THPVariable__nested_get_max_seqlen), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_get_jagged_dummy", castPyCFunctionWithKeywords(THPVariable__nested_get_jagged_dummy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_compute_contiguous_strides_offsets", castPyCFunctionWithKeywords(THPVariable__nested_compute_contiguous_strides_offsets), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_trilinear", castPyCFunctionWithKeywords(THPVariable__trilinear), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"triplet_margin_loss", castPyCFunctionWithKeywords(THPVariable_triplet_margin_loss), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"trunc", castPyCFunctionWithKeywords(THPVariable_trunc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"trunc_", castPyCFunctionWithKeywords(THPVariable_trunc_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fix", castPyCFunctionWithKeywords(THPVariable_fix), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fix_", castPyCFunctionWithKeywords(THPVariable_fix_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_has_compatible_shallow_copy_type", castPyCFunctionWithKeywords(THPVariable__has_compatible_shallow_copy_type), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unique", castPyCFunctionWithKeywords(THPVariable__unique), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unique_dim", castPyCFunctionWithKeywords(THPVariable_unique_dim), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unique_consecutive", castPyCFunctionWithKeywords(THPVariable_unique_consecutive), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_unique2", castPyCFunctionWithKeywords(THPVariable__unique2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unsqueeze", castPyCFunctionWithKeywords(THPVariable_unsqueeze), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"vander", castPyCFunctionWithKeywords(THPVariable_vander), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"var", castPyCFunctionWithKeywords(THPVariable_var), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"var_mean", castPyCFunctionWithKeywords(THPVariable_var_mean), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"where", castPyCFunctionWithKeywords(THPVariable_where), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"norm_except_dim", castPyCFunctionWithKeywords(THPVariable_norm_except_dim), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_weight_norm", castPyCFunctionWithKeywords(THPVariable__weight_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_weight_norm_interface", castPyCFunctionWithKeywords(THPVariable__weight_norm_interface), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"zeros", castPyCFunctionWithKeywords(THPVariable_zeros), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_efficientzerotensor", castPyCFunctionWithKeywords(THPVariable__efficientzerotensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"zeros_like", castPyCFunctionWithKeywords(THPVariable_zeros_like), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_standard_gamma_grad", castPyCFunctionWithKeywords(THPVariable__standard_gamma_grad), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_standard_gamma", castPyCFunctionWithKeywords(THPVariable__standard_gamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_dirichlet_grad", castPyCFunctionWithKeywords(THPVariable__dirichlet_grad), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sample_dirichlet", castPyCFunctionWithKeywords(THPVariable__sample_dirichlet), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"poisson", castPyCFunctionWithKeywords(THPVariable_poisson), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"binomial", castPyCFunctionWithKeywords(THPVariable_binomial), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"native_norm", castPyCFunctionWithKeywords(THPVariable_native_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_sum", castPyCFunctionWithKeywords(THPVariable__sparse_sum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_csr_sum", castPyCFunctionWithKeywords(THPVariable__sparse_csr_sum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_csr_prod", castPyCFunctionWithKeywords(THPVariable__sparse_csr_prod), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_softmax_backward_data", castPyCFunctionWithKeywords(THPVariable__sparse_softmax_backward_data), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_log_softmax_backward_data", castPyCFunctionWithKeywords(THPVariable__sparse_log_softmax_backward_data), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"norm", castPyCFunctionWithKeywords(THPVariable_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"frexp", castPyCFunctionWithKeywords(THPVariable_frexp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"frobenius_norm", castPyCFunctionWithKeywords(THPVariable_frobenius_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nuclear_norm", castPyCFunctionWithKeywords(THPVariable_nuclear_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"clone", castPyCFunctionWithKeywords(THPVariable_clone), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"positive", castPyCFunctionWithKeywords(THPVariable_positive), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"resize_as_", castPyCFunctionWithKeywords(THPVariable_resize_as_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"resize_as_sparse_", castPyCFunctionWithKeywords(THPVariable_resize_as_sparse_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"zero_", castPyCFunctionWithKeywords(THPVariable_zero_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sub", castPyCFunctionWithKeywords(THPVariable_sub), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"subtract", castPyCFunctionWithKeywords(THPVariable_subtract), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rsub", castPyCFunctionWithKeywords(THPVariable_rsub), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"heaviside", castPyCFunctionWithKeywords(THPVariable_heaviside), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addmm", castPyCFunctionWithKeywords(THPVariable_addmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_addmm_activation", castPyCFunctionWithKeywords(THPVariable__addmm_activation), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_mm", castPyCFunctionWithKeywords(THPVariable__scaled_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_grouped_mm", castPyCFunctionWithKeywords(THPVariable__scaled_grouped_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_sparse_coo_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_coo_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_sparse_compressed_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_compressed_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_sparse_csr_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_csr_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_sparse_csc_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_csc_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_sparse_bsr_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_bsr_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_validate_sparse_bsc_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_bsc_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_to_cpu", castPyCFunctionWithKeywords(THPVariable__to_cpu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_coalesce", castPyCFunctionWithKeywords(THPVariable__coalesce), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hspmm", castPyCFunctionWithKeywords(THPVariable_hspmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unbind", castPyCFunctionWithKeywords(THPVariable_unbind), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_to_sparse_semi_structured", castPyCFunctionWithKeywords(THPVariable__to_sparse_semi_structured), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantize_per_tensor_dynamic", castPyCFunctionWithKeywords(THPVariable_quantize_per_tensor_dynamic), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantize_per_tensor", castPyCFunctionWithKeywords(THPVariable_quantize_per_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantize_per_channel", castPyCFunctionWithKeywords(THPVariable_quantize_per_channel), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dequantize", castPyCFunctionWithKeywords(THPVariable_dequantize), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"q_scale", castPyCFunctionWithKeywords(THPVariable_q_scale), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"q_zero_point", castPyCFunctionWithKeywords(THPVariable_q_zero_point), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"q_per_channel_scales", castPyCFunctionWithKeywords(THPVariable_q_per_channel_scales), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"q_per_channel_zero_points", castPyCFunctionWithKeywords(THPVariable_q_per_channel_zero_points), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"q_per_channel_axis", castPyCFunctionWithKeywords(THPVariable_q_per_channel_axis), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"int_repr", castPyCFunctionWithKeywords(THPVariable_int_repr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_make_per_tensor_quantized_tensor", castPyCFunctionWithKeywords(THPVariable__make_per_tensor_quantized_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_make_per_channel_quantized_tensor", castPyCFunctionWithKeywords(THPVariable__make_per_channel_quantized_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fake_quantize_per_tensor_affine", castPyCFunctionWithKeywords(THPVariable_fake_quantize_per_tensor_affine), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fake_quantize_per_tensor_affine_cachemask_tensor_qparams", castPyCFunctionWithKeywords(THPVariable__fake_quantize_per_tensor_affine_cachemask_tensor_qparams), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fake_quantize_learnable_per_tensor_affine", castPyCFunctionWithKeywords(THPVariable__fake_quantize_learnable_per_tensor_affine), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fake_quantize_per_channel_affine", castPyCFunctionWithKeywords(THPVariable_fake_quantize_per_channel_affine), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fake_quantize_learnable_per_channel_affine", castPyCFunctionWithKeywords(THPVariable__fake_quantize_learnable_per_channel_affine), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fused_moving_avg_obs_fake_quant", castPyCFunctionWithKeywords(THPVariable_fused_moving_avg_obs_fake_quant), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_moving_avg_obs_fq_helper", castPyCFunctionWithKeywords(THPVariable__fused_moving_avg_obs_fq_helper), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_choose_qparams_per_tensor", castPyCFunctionWithKeywords(THPVariable__choose_qparams_per_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_saturate_weight_to_fp16", castPyCFunctionWithKeywords(THPVariable__saturate_weight_to_fp16), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"choose_qparams_optimized", castPyCFunctionWithKeywords(THPVariable_choose_qparams_optimized), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"meshgrid", castPyCFunctionWithKeywords(THPVariable_meshgrid), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cartesian_prod", castPyCFunctionWithKeywords(THPVariable_cartesian_prod), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"combinations", castPyCFunctionWithKeywords(THPVariable_combinations), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"result_type", castPyCFunctionWithKeywords(THPVariable_result_type), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"can_cast", castPyCFunctionWithKeywords(THPVariable_can_cast), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"promote_types", castPyCFunctionWithKeywords(THPVariable_promote_types), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_lstm_mps", castPyCFunctionWithKeywords(THPVariable__lstm_mps), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lstm", castPyCFunctionWithKeywords(THPVariable_lstm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gru", castPyCFunctionWithKeywords(THPVariable_gru), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rnn_tanh", castPyCFunctionWithKeywords(THPVariable_rnn_tanh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rnn_relu", castPyCFunctionWithKeywords(THPVariable_rnn_relu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lstm_cell", castPyCFunctionWithKeywords(THPVariable_lstm_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gru_cell", castPyCFunctionWithKeywords(THPVariable_gru_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rnn_tanh_cell", castPyCFunctionWithKeywords(THPVariable_rnn_tanh_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"rnn_relu_cell", castPyCFunctionWithKeywords(THPVariable_rnn_relu_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_lstm_cell", castPyCFunctionWithKeywords(THPVariable_quantized_lstm_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_gru_cell", castPyCFunctionWithKeywords(THPVariable_quantized_gru_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_rnn_relu_cell", castPyCFunctionWithKeywords(THPVariable_quantized_rnn_relu_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantized_rnn_tanh_cell", castPyCFunctionWithKeywords(THPVariable_quantized_rnn_tanh_cell), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_pack_padded_sequence", castPyCFunctionWithKeywords(THPVariable__pack_padded_sequence), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_pad_packed_sequence", castPyCFunctionWithKeywords(THPVariable__pad_packed_sequence), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"masked_fill", castPyCFunctionWithKeywords(THPVariable_masked_fill), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"masked_scatter", castPyCFunctionWithKeywords(THPVariable_masked_scatter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_masked_softmax", castPyCFunctionWithKeywords(THPVariable__masked_softmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"put", castPyCFunctionWithKeywords(THPVariable_put), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_add", castPyCFunctionWithKeywords(THPVariable_index_add), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_reduce", castPyCFunctionWithKeywords(THPVariable_index_reduce), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_fill", castPyCFunctionWithKeywords(THPVariable_index_fill), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"scatter", castPyCFunctionWithKeywords(THPVariable_scatter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"scatter_add", castPyCFunctionWithKeywords(THPVariable_scatter_add), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"scatter_reduce", castPyCFunctionWithKeywords(THPVariable_scatter_reduce), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bitwise_and", castPyCFunctionWithKeywords(THPVariable_bitwise_and), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"__and__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_<THPVariable___and__>), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bitwise_or", castPyCFunctionWithKeywords(THPVariable_bitwise_or), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"__or__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_<THPVariable___or__>), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bitwise_xor", castPyCFunctionWithKeywords(THPVariable_bitwise_xor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"__xor__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_<THPVariable___xor__>), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"__lshift__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_<THPVariable___lshift__>), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bitwise_left_shift", castPyCFunctionWithKeywords(THPVariable_bitwise_left_shift), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"__rshift__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_<THPVariable___rshift__>), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bitwise_right_shift", castPyCFunctionWithKeywords(THPVariable_bitwise_right_shift), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addbmm", castPyCFunctionWithKeywords(THPVariable_addbmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diag", castPyCFunctionWithKeywords(THPVariable_diag), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cross", castPyCFunctionWithKeywords(THPVariable_cross), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"triu", castPyCFunctionWithKeywords(THPVariable_triu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tril", castPyCFunctionWithKeywords(THPVariable_tril), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"tril_indices", castPyCFunctionWithKeywords(THPVariable_tril_indices), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"triu_indices", castPyCFunctionWithKeywords(THPVariable_triu_indices), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"trace", castPyCFunctionWithKeywords(THPVariable_trace), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ne", castPyCFunctionWithKeywords(THPVariable_ne), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"not_equal", castPyCFunctionWithKeywords(THPVariable_not_equal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"eq", castPyCFunctionWithKeywords(THPVariable_eq), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ge", castPyCFunctionWithKeywords(THPVariable_ge), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"greater_equal", castPyCFunctionWithKeywords(THPVariable_greater_equal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"le", castPyCFunctionWithKeywords(THPVariable_le), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"less_equal", castPyCFunctionWithKeywords(THPVariable_less_equal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gt", castPyCFunctionWithKeywords(THPVariable_gt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"greater", castPyCFunctionWithKeywords(THPVariable_greater), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lt", castPyCFunctionWithKeywords(THPVariable_lt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"less", castPyCFunctionWithKeywords(THPVariable_less), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"take", castPyCFunctionWithKeywords(THPVariable_take), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"take_along_dim", castPyCFunctionWithKeywords(THPVariable_take_along_dim), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"index_select", castPyCFunctionWithKeywords(THPVariable_index_select), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"masked_select", castPyCFunctionWithKeywords(THPVariable_masked_select), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nonzero_static", castPyCFunctionWithKeywords(THPVariable_nonzero_static), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"argwhere", castPyCFunctionWithKeywords(THPVariable_argwhere), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"gather", castPyCFunctionWithKeywords(THPVariable_gather), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addcmul", castPyCFunctionWithKeywords(THPVariable_addcmul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"addcdiv", castPyCFunctionWithKeywords(THPVariable_addcdiv), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"triangular_solve", castPyCFunctionWithKeywords(THPVariable_triangular_solve), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_linalg_check_errors", castPyCFunctionWithKeywords(THPVariable__linalg_check_errors), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"svd", castPyCFunctionWithKeywords(THPVariable_svd), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"swapaxes", castPyCFunctionWithKeywords(THPVariable_swapaxes), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"swapdims", castPyCFunctionWithKeywords(THPVariable_swapdims), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cholesky", castPyCFunctionWithKeywords(THPVariable_cholesky), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cholesky_solve", castPyCFunctionWithKeywords(THPVariable_cholesky_solve), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"cholesky_inverse", castPyCFunctionWithKeywords(THPVariable_cholesky_inverse), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"qr", castPyCFunctionWithKeywords(THPVariable_qr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"geqrf", castPyCFunctionWithKeywords(THPVariable_geqrf), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"orgqr", castPyCFunctionWithKeywords(THPVariable_orgqr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ormqr", castPyCFunctionWithKeywords(THPVariable_ormqr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_lu_with_info", castPyCFunctionWithKeywords(THPVariable__lu_with_info), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lu_solve", castPyCFunctionWithKeywords(THPVariable_lu_solve), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lu_unpack", castPyCFunctionWithKeywords(THPVariable_lu_unpack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"multinomial", castPyCFunctionWithKeywords(THPVariable_multinomial), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lgamma", castPyCFunctionWithKeywords(THPVariable_lgamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"digamma", castPyCFunctionWithKeywords(THPVariable_digamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"polygamma", castPyCFunctionWithKeywords(THPVariable_polygamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"erfinv", castPyCFunctionWithKeywords(THPVariable_erfinv), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"i0", castPyCFunctionWithKeywords(THPVariable_i0), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"i0_", castPyCFunctionWithKeywords(THPVariable_i0_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sign", castPyCFunctionWithKeywords(THPVariable_sign), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"signbit", castPyCFunctionWithKeywords(THPVariable_signbit), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"dist", castPyCFunctionWithKeywords(THPVariable_dist), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"atan2", castPyCFunctionWithKeywords(THPVariable_atan2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"arctan2", castPyCFunctionWithKeywords(THPVariable_arctan2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"lerp", castPyCFunctionWithKeywords(THPVariable_lerp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"histc", castPyCFunctionWithKeywords(THPVariable_histc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"histogram", castPyCFunctionWithKeywords(THPVariable_histogram), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_histogramdd_bin_edges", castPyCFunctionWithKeywords(THPVariable__histogramdd_bin_edges), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_histogramdd_from_bin_cts", castPyCFunctionWithKeywords(THPVariable__histogramdd_from_bin_cts), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_histogramdd_from_bin_tensors", castPyCFunctionWithKeywords(THPVariable__histogramdd_from_bin_tensors), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"histogramdd", castPyCFunctionWithKeywords(THPVariable_histogramdd), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fmod", castPyCFunctionWithKeywords(THPVariable_fmod), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"hypot", castPyCFunctionWithKeywords(THPVariable_hypot), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"igamma", castPyCFunctionWithKeywords(THPVariable_igamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"igammac", castPyCFunctionWithKeywords(THPVariable_igammac), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nextafter", castPyCFunctionWithKeywords(THPVariable_nextafter), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"remainder", castPyCFunctionWithKeywords(THPVariable_remainder), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fmin", castPyCFunctionWithKeywords(THPVariable_fmin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"fmax", castPyCFunctionWithKeywords(THPVariable_fmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"maximum", castPyCFunctionWithKeywords(THPVariable_maximum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"minimum", castPyCFunctionWithKeywords(THPVariable_minimum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"quantile", castPyCFunctionWithKeywords(THPVariable_quantile), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"nanquantile", castPyCFunctionWithKeywords(THPVariable_nanquantile), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"sort", castPyCFunctionWithKeywords(THPVariable_sort), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"msort", castPyCFunctionWithKeywords(THPVariable_msort), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"argsort", castPyCFunctionWithKeywords(THPVariable_argsort), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"topk", castPyCFunctionWithKeywords(THPVariable_topk), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"renorm", castPyCFunctionWithKeywords(THPVariable_renorm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"equal", castPyCFunctionWithKeywords(THPVariable_equal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"pow", castPyCFunctionWithKeywords(THPVariable_pow), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"float_power", castPyCFunctionWithKeywords(THPVariable_float_power), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"normal", castPyCFunctionWithKeywords(THPVariable_normal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_amp_foreach_non_finite_check_and_unscale_", castPyCFunctionWithKeywords(THPVariable__amp_foreach_non_finite_check_and_unscale_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_amp_update_scale_", castPyCFunctionWithKeywords(THPVariable__amp_update_scale_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_add", castPyCFunctionWithKeywords(THPVariable__foreach_add), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_add_", castPyCFunctionWithKeywords(THPVariable__foreach_add_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sub", castPyCFunctionWithKeywords(THPVariable__foreach_sub), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sub_", castPyCFunctionWithKeywords(THPVariable__foreach_sub_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_mul", castPyCFunctionWithKeywords(THPVariable__foreach_mul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_mul_", castPyCFunctionWithKeywords(THPVariable__foreach_mul_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_div", castPyCFunctionWithKeywords(THPVariable__foreach_div), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_div_", castPyCFunctionWithKeywords(THPVariable__foreach_div_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_clamp_max", castPyCFunctionWithKeywords(THPVariable__foreach_clamp_max), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_clamp_max_", castPyCFunctionWithKeywords(THPVariable__foreach_clamp_max_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_clamp_min", castPyCFunctionWithKeywords(THPVariable__foreach_clamp_min), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_clamp_min_", castPyCFunctionWithKeywords(THPVariable__foreach_clamp_min_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_maximum", castPyCFunctionWithKeywords(THPVariable__foreach_maximum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_maximum_", castPyCFunctionWithKeywords(THPVariable__foreach_maximum_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_minimum", castPyCFunctionWithKeywords(THPVariable__foreach_minimum), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_minimum_", castPyCFunctionWithKeywords(THPVariable__foreach_minimum_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_addcdiv", castPyCFunctionWithKeywords(THPVariable__foreach_addcdiv), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_addcdiv_", castPyCFunctionWithKeywords(THPVariable__foreach_addcdiv_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_addcmul", castPyCFunctionWithKeywords(THPVariable__foreach_addcmul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_addcmul_", castPyCFunctionWithKeywords(THPVariable__foreach_addcmul_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_abs", castPyCFunctionWithKeywords(THPVariable__foreach_abs), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_abs_", castPyCFunctionWithKeywords(THPVariable__foreach_abs_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_acos", castPyCFunctionWithKeywords(THPVariable__foreach_acos), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_acos_", castPyCFunctionWithKeywords(THPVariable__foreach_acos_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_asin", castPyCFunctionWithKeywords(THPVariable__foreach_asin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_asin_", castPyCFunctionWithKeywords(THPVariable__foreach_asin_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_atan", castPyCFunctionWithKeywords(THPVariable__foreach_atan), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_atan_", castPyCFunctionWithKeywords(THPVariable__foreach_atan_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_ceil", castPyCFunctionWithKeywords(THPVariable__foreach_ceil), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_ceil_", castPyCFunctionWithKeywords(THPVariable__foreach_ceil_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_cos", castPyCFunctionWithKeywords(THPVariable__foreach_cos), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_cos_", castPyCFunctionWithKeywords(THPVariable__foreach_cos_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_cosh", castPyCFunctionWithKeywords(THPVariable__foreach_cosh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_cosh_", castPyCFunctionWithKeywords(THPVariable__foreach_cosh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_erf", castPyCFunctionWithKeywords(THPVariable__foreach_erf), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_erf_", castPyCFunctionWithKeywords(THPVariable__foreach_erf_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_erfc", castPyCFunctionWithKeywords(THPVariable__foreach_erfc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_erfc_", castPyCFunctionWithKeywords(THPVariable__foreach_erfc_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_exp", castPyCFunctionWithKeywords(THPVariable__foreach_exp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_exp_", castPyCFunctionWithKeywords(THPVariable__foreach_exp_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_expm1", castPyCFunctionWithKeywords(THPVariable__foreach_expm1), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_expm1_", castPyCFunctionWithKeywords(THPVariable__foreach_expm1_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_floor", castPyCFunctionWithKeywords(THPVariable__foreach_floor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_floor_", castPyCFunctionWithKeywords(THPVariable__foreach_floor_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_frac", castPyCFunctionWithKeywords(THPVariable__foreach_frac), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_frac_", castPyCFunctionWithKeywords(THPVariable__foreach_frac_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_lerp", castPyCFunctionWithKeywords(THPVariable__foreach_lerp), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_lerp_", castPyCFunctionWithKeywords(THPVariable__foreach_lerp_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_lgamma", castPyCFunctionWithKeywords(THPVariable__foreach_lgamma), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_lgamma_", castPyCFunctionWithKeywords(THPVariable__foreach_lgamma_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log", castPyCFunctionWithKeywords(THPVariable__foreach_log), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log_", castPyCFunctionWithKeywords(THPVariable__foreach_log_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log10", castPyCFunctionWithKeywords(THPVariable__foreach_log10), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log10_", castPyCFunctionWithKeywords(THPVariable__foreach_log10_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log1p", castPyCFunctionWithKeywords(THPVariable__foreach_log1p), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log1p_", castPyCFunctionWithKeywords(THPVariable__foreach_log1p_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log2", castPyCFunctionWithKeywords(THPVariable__foreach_log2), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_log2_", castPyCFunctionWithKeywords(THPVariable__foreach_log2_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_max", castPyCFunctionWithKeywords(THPVariable__foreach_max), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_neg", castPyCFunctionWithKeywords(THPVariable__foreach_neg), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_neg_", castPyCFunctionWithKeywords(THPVariable__foreach_neg_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_norm", castPyCFunctionWithKeywords(THPVariable__foreach_norm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_pow", castPyCFunctionWithKeywords(THPVariable__foreach_pow), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_pow_", castPyCFunctionWithKeywords(THPVariable__foreach_pow_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_reciprocal", castPyCFunctionWithKeywords(THPVariable__foreach_reciprocal), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_reciprocal_", castPyCFunctionWithKeywords(THPVariable__foreach_reciprocal_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_round", castPyCFunctionWithKeywords(THPVariable__foreach_round), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_round_", castPyCFunctionWithKeywords(THPVariable__foreach_round_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_rsqrt", castPyCFunctionWithKeywords(THPVariable__foreach_rsqrt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_rsqrt_", castPyCFunctionWithKeywords(THPVariable__foreach_rsqrt_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sigmoid", castPyCFunctionWithKeywords(THPVariable__foreach_sigmoid), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sigmoid_", castPyCFunctionWithKeywords(THPVariable__foreach_sigmoid_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sign", castPyCFunctionWithKeywords(THPVariable__foreach_sign), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sign_", castPyCFunctionWithKeywords(THPVariable__foreach_sign_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sin", castPyCFunctionWithKeywords(THPVariable__foreach_sin), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sin_", castPyCFunctionWithKeywords(THPVariable__foreach_sin_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sinh", castPyCFunctionWithKeywords(THPVariable__foreach_sinh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sinh_", castPyCFunctionWithKeywords(THPVariable__foreach_sinh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sqrt", castPyCFunctionWithKeywords(THPVariable__foreach_sqrt), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_sqrt_", castPyCFunctionWithKeywords(THPVariable__foreach_sqrt_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_tan", castPyCFunctionWithKeywords(THPVariable__foreach_tan), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_tan_", castPyCFunctionWithKeywords(THPVariable__foreach_tan_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_tanh", castPyCFunctionWithKeywords(THPVariable__foreach_tanh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_tanh_", castPyCFunctionWithKeywords(THPVariable__foreach_tanh_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_trunc", castPyCFunctionWithKeywords(THPVariable__foreach_trunc), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_trunc_", castPyCFunctionWithKeywords(THPVariable__foreach_trunc_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_zero_", castPyCFunctionWithKeywords(THPVariable__foreach_zero_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foreach_copy_", castPyCFunctionWithKeywords(THPVariable__foreach_copy_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"bucketize", castPyCFunctionWithKeywords(THPVariable_bucketize), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"searchsorted", castPyCFunctionWithKeywords(THPVariable_searchsorted), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_convert_indices_from_coo_to_csr", castPyCFunctionWithKeywords(THPVariable__convert_indices_from_coo_to_csr), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_convert_indices_from_csr_to_coo", castPyCFunctionWithKeywords(THPVariable__convert_indices_from_csr_to_coo), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"mkldnn_adaptive_avg_pool2d", castPyCFunctionWithKeywords(THPVariable_mkldnn_adaptive_avg_pool2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_adaptive_avg_pool2d", castPyCFunctionWithKeywords(THPVariable__adaptive_avg_pool2d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_adaptive_avg_pool3d", castPyCFunctionWithKeywords(THPVariable__adaptive_avg_pool3d), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"column_stack", castPyCFunctionWithKeywords(THPVariable_column_stack), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isfinite", castPyCFunctionWithKeywords(THPVariable_isfinite), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isinf", castPyCFunctionWithKeywords(THPVariable_isinf), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isposinf", castPyCFunctionWithKeywords(THPVariable_isposinf), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"isneginf", castPyCFunctionWithKeywords(THPVariable_isneginf), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_add_batch_dim", castPyCFunctionWithKeywords(THPVariable__add_batch_dim), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_remove_batch_dim", castPyCFunctionWithKeywords(THPVariable__remove_batch_dim), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_linalg_det", castPyCFunctionWithKeywords(THPVariable__linalg_det), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"det", castPyCFunctionWithKeywords(THPVariable_det), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_linalg_slogdet", castPyCFunctionWithKeywords(THPVariable__linalg_slogdet), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"slogdet", castPyCFunctionWithKeywords(THPVariable_slogdet), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"logdet", castPyCFunctionWithKeywords(THPVariable_logdet), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_linalg_eigh", castPyCFunctionWithKeywords(THPVariable__linalg_eigh), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"inverse", castPyCFunctionWithKeywords(THPVariable_inverse), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"inner", castPyCFunctionWithKeywords(THPVariable_inner), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"outer", castPyCFunctionWithKeywords(THPVariable_outer), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ger", castPyCFunctionWithKeywords(THPVariable_ger), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_linalg_svd", castPyCFunctionWithKeywords(THPVariable__linalg_svd), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_linalg_solve_ex", castPyCFunctionWithKeywords(THPVariable__linalg_solve_ex), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_serialization_subcmul", castPyCFunctionWithKeywords(THPVariable__test_serialization_subcmul), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_parallel_materialize", castPyCFunctionWithKeywords(THPVariable__test_parallel_materialize), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_autograd_multiple_dispatch", castPyCFunctionWithKeywords(THPVariable__test_autograd_multiple_dispatch), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_autograd_multiple_dispatch_view", castPyCFunctionWithKeywords(THPVariable__test_autograd_multiple_dispatch_view), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_test_autograd_multiple_dispatch_view_copy", castPyCFunctionWithKeywords(THPVariable__test_autograd_multiple_dispatch_view_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"segment_reduce", castPyCFunctionWithKeywords(THPVariable_segment_reduce), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_tensor_from_tensor_list", castPyCFunctionWithKeywords(THPVariable__nested_tensor_from_tensor_list), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fw_primal_copy", castPyCFunctionWithKeywords(THPVariable__fw_primal_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_make_dual_copy", castPyCFunctionWithKeywords(THPVariable__make_dual_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"view_as_real_copy", castPyCFunctionWithKeywords(THPVariable_view_as_real_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"view_as_complex_copy", castPyCFunctionWithKeywords(THPVariable_view_as_complex_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_conj_copy", castPyCFunctionWithKeywords(THPVariable__conj_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_neg_view_copy", castPyCFunctionWithKeywords(THPVariable__neg_view_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"as_strided_copy", castPyCFunctionWithKeywords(THPVariable_as_strided_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_sparse_broadcast_to_copy", castPyCFunctionWithKeywords(THPVariable__sparse_broadcast_to_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"diagonal_copy", castPyCFunctionWithKeywords(THPVariable_diagonal_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"expand_copy", castPyCFunctionWithKeywords(THPVariable_expand_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"permute_copy", castPyCFunctionWithKeywords(THPVariable_permute_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_reshape_alias_copy", castPyCFunctionWithKeywords(THPVariable__reshape_alias_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"select_copy", castPyCFunctionWithKeywords(THPVariable_select_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"detach_copy", castPyCFunctionWithKeywords(THPVariable_detach_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"slice_copy", castPyCFunctionWithKeywords(THPVariable_slice_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"split_copy", castPyCFunctionWithKeywords(THPVariable_split_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"split_with_sizes_copy", castPyCFunctionWithKeywords(THPVariable_split_with_sizes_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"squeeze_copy", castPyCFunctionWithKeywords(THPVariable_squeeze_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"t_copy", castPyCFunctionWithKeywords(THPVariable_t_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"transpose_copy", castPyCFunctionWithKeywords(THPVariable_transpose_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unsqueeze_copy", castPyCFunctionWithKeywords(THPVariable_unsqueeze_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_indices_copy", castPyCFunctionWithKeywords(THPVariable__indices_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_values_copy", castPyCFunctionWithKeywords(THPVariable__values_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"indices_copy", castPyCFunctionWithKeywords(THPVariable_indices_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"values_copy", castPyCFunctionWithKeywords(THPVariable_values_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"crow_indices_copy", castPyCFunctionWithKeywords(THPVariable_crow_indices_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"col_indices_copy", castPyCFunctionWithKeywords(THPVariable_col_indices_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"ccol_indices_copy", castPyCFunctionWithKeywords(THPVariable_ccol_indices_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"row_indices_copy", castPyCFunctionWithKeywords(THPVariable_row_indices_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unbind_copy", castPyCFunctionWithKeywords(THPVariable_unbind_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"view_copy", castPyCFunctionWithKeywords(THPVariable_view_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"unfold_copy", castPyCFunctionWithKeywords(THPVariable_unfold_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"alias_copy", castPyCFunctionWithKeywords(THPVariable_alias_copy), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_from_padded_tensor", castPyCFunctionWithKeywords(THPVariable__nested_from_padded_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_nested_tensor_softmax_with_shape", castPyCFunctionWithKeywords(THPVariable__nested_tensor_softmax_with_shape), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_safe_softmax", castPyCFunctionWithKeywords(THPVariable__safe_softmax), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_transformer_encoder_layer_fwd", castPyCFunctionWithKeywords(THPVariable__transformer_encoder_layer_fwd), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_native_multi_head_attention", castPyCFunctionWithKeywords(THPVariable__native_multi_head_attention), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_sdp_choice", castPyCFunctionWithKeywords(THPVariable__fused_sdp_choice), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_dot_product_attention_math", castPyCFunctionWithKeywords(THPVariable__scaled_dot_product_attention_math), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_dot_product_attention_math_for_mps", castPyCFunctionWithKeywords(THPVariable__scaled_dot_product_attention_math_for_mps), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_dot_product_flash_attention", castPyCFunctionWithKeywords(THPVariable__scaled_dot_product_flash_attention), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_dot_product_flash_attention_for_cpu", castPyCFunctionWithKeywords(THPVariable__scaled_dot_product_flash_attention_for_cpu), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_dot_product_efficient_attention", castPyCFunctionWithKeywords(THPVariable__scaled_dot_product_efficient_attention), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_scaled_dot_product_cudnn_attention", castPyCFunctionWithKeywords(THPVariable__scaled_dot_product_cudnn_attention), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_triton_scaled_dot_attention", castPyCFunctionWithKeywords(THPVariable__triton_scaled_dot_attention), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fill_mem_eff_dropout_mask_", castPyCFunctionWithKeywords(THPVariable__fill_mem_eff_dropout_mask_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_triton_multi_head_attention", castPyCFunctionWithKeywords(THPVariable__triton_multi_head_attention), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_foobar", castPyCFunctionWithKeywords(THPVariable__foobar), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_adam_", castPyCFunctionWithKeywords(THPVariable__fused_adam_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_adamw_", castPyCFunctionWithKeywords(THPVariable__fused_adamw_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_sgd_", castPyCFunctionWithKeywords(THPVariable__fused_sgd_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_fused_adagrad_", castPyCFunctionWithKeywords(THPVariable__fused_adagrad_), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
  {"_propagate_xla_data", castPyCFunctionWithKeywords(THPVariable__propagate_xla_data), METH_VARARGS | METH_KEYWORDS | METH_STATIC, nullptr},
};

void gatherTorchFunctionsEverything(std::vector<PyMethodDef> &torch_functions) {
  constexpr size_t num_functions = sizeof(torch_functions_shard) / sizeof(torch_functions_shard[0]);
  torch_functions.insert(
    torch_functions.end(),
    torch_functions_shard,
    torch_functions_shard + num_functions);
}

// generated methods start here

// _cast_Byte
static PyObject * THPVariable__cast_Byte(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Byte(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Byte(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Byte = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Byte(self, non_blocking);
  };
  return wrap(dispatch__cast_Byte(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Char
static PyObject * THPVariable__cast_Char(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Char(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Char(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Char = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Char(self, non_blocking);
  };
  return wrap(dispatch__cast_Char(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Double
static PyObject * THPVariable__cast_Double(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Double(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Double(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Double = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Double(self, non_blocking);
  };
  return wrap(dispatch__cast_Double(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Float
static PyObject * THPVariable__cast_Float(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Float(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Float(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Float = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Float(self, non_blocking);
  };
  return wrap(dispatch__cast_Float(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Int
static PyObject * THPVariable__cast_Int(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Int(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Int(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Int = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Int(self, non_blocking);
  };
  return wrap(dispatch__cast_Int(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Long
static PyObject * THPVariable__cast_Long(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Long(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Long(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Long = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Long(self, non_blocking);
  };
  return wrap(dispatch__cast_Long(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Short
static PyObject * THPVariable__cast_Short(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Short(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Short(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Short = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Short(self, non_blocking);
  };
  return wrap(dispatch__cast_Short(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cast_Half
static PyObject * THPVariable__cast_Half(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cast_Half(Tensor input, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cast_Half(Tensor self, bool non_blocking=False) -> Tensor
  
  auto dispatch__cast_Half = [](const at::Tensor & self, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cast_Half(self, non_blocking);
  };
  return wrap(dispatch__cast_Half(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _make_dual
static PyObject * THPVariable__make_dual(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_make_dual(Tensor primal, Tensor tangent, int64_t level)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_make_dual(Tensor(a) primal, Tensor tangent, int level) -> Tensor(a)
  
  auto dispatch__make_dual = [](const at::Tensor & primal, const at::Tensor & tangent, int64_t level) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_make_dual(primal, tangent, level);
  };
  return wrap(dispatch__make_dual(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unpack_dual
static PyObject * THPVariable__unpack_dual(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__unpack_dual_structseq();
  static PythonArgParser parser({
    "_unpack_dual(Tensor dual, int64_t level)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unpack_dual(Tensor(a) dual, int level) -> (Tensor(a) primal, Tensor tangent)
  
  auto dispatch__unpack_dual = [](const at::Tensor & dual, int64_t level) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_unpack_dual(dual, level);
  };
  return wrap(NamedTuple, dispatch__unpack_dual(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// align_tensors
static PyObject * THPVariable_align_tensors(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "align_tensors(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::align_tensors(Tensor[] tensors) -> Tensor[]
  
  auto dispatch_align_tensors = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::align_tensors(tensors);
  };
  return wrap(dispatch_align_tensors(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _assert_async
static PyObject * THPVariable__assert_async(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_assert_async(Tensor input)",
    "_assert_async(Tensor input, c10::string_view assert_msg)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_assert_async(Tensor self) -> ()
      
      auto dispatch__assert_async = [](const at::Tensor & self) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_assert_async(self);
      };
      dispatch__assert_async(_r.tensor(0));
      Py_RETURN_NONE;
    }
    case 1: {
      // aten::_assert_async.msg(Tensor self, str assert_msg) -> ()
      
      auto dispatch__assert_async = [](const at::Tensor & self, c10::string_view assert_msg) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_assert_async(self, assert_msg);
      };
      dispatch__assert_async(_r.tensor(0), _r.stringView(1));
      Py_RETURN_NONE;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _assert_scalar
static PyObject * THPVariable__assert_scalar(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_assert_scalar(Scalar self, c10::string_view assert_msg)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_assert_scalar(Scalar self, str assert_msg) -> ()
  
  auto dispatch__assert_scalar = [](const at::Scalar & self, c10::string_view assert_msg) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_assert_scalar(self, assert_msg);
  };
  dispatch__assert_scalar(_r.scalar(0), _r.stringView(1));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _functional_assert_scalar
static PyObject * THPVariable__functional_assert_scalar(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_functional_assert_scalar(Scalar self, c10::string_view assert_msg, Tensor dep_token)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_functional_assert_scalar(Scalar self, str assert_msg, Tensor dep_token) -> Tensor
  
  auto dispatch__functional_assert_scalar = [](const at::Scalar & self, c10::string_view assert_msg, const at::Tensor & dep_token) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_functional_assert_scalar(self, assert_msg, dep_token);
  };
  return wrap(dispatch__functional_assert_scalar(_r.scalar(0), _r.stringView(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _functional_assert_async
static PyObject * THPVariable__functional_assert_async(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_functional_assert_async(Tensor input, c10::string_view assert_msg, Tensor dep_token)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_functional_assert_async.msg(Tensor self, str assert_msg, Tensor dep_token) -> Tensor
  
  auto dispatch__functional_assert_async = [](const at::Tensor & self, c10::string_view assert_msg, const at::Tensor & dep_token) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_functional_assert_async(self, assert_msg, dep_token);
  };
  return wrap(dispatch__functional_assert_async(_r.tensor(0), _r.stringView(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _assert_tensor_metadata
static PyObject * THPVariable__assert_tensor_metadata(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_assert_tensor_metadata(Tensor a, SymIntArrayRef? size=None, SymIntArrayRef? stride=None, ScalarType? dtype=None, *, Device? device=None, Layout? layout=None)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_assert_tensor_metadata(Tensor a, SymInt[]? size=None, SymInt[]? stride=None, ScalarType? dtype=None, *, Device? device=None, Layout? layout=None) -> ()
  
  auto dispatch__assert_tensor_metadata = [](const at::Tensor & a, at::OptionalSymIntArrayRef size, at::OptionalSymIntArrayRef stride, ::std::optional<at::ScalarType> dtype, ::std::optional<at::Device> device, ::std::optional<at::Layout> layout) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_assert_tensor_metadata_symint(a, size, stride, dtype, device, layout);
  };
  dispatch__assert_tensor_metadata(_r.tensor(0), _r.symintlistOptional(1), _r.symintlistOptional(2), _r.scalartypeOptional(3), _r.deviceOptional(4), _r.layoutOptional(5));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _print
static PyObject * THPVariable__print(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_print(c10::string_view s)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_print(str s) -> ()
  
  auto dispatch__print = [](c10::string_view s) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_print(s);
  };
  dispatch__print(_r.stringView(0));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sym_constrain_range
static PyObject * THPVariable_sym_constrain_range(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sym_constrain_range(Scalar size, *, int64_t? min=None, int64_t? max=None)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sym_constrain_range(Scalar size, *, int? min=None, int? max=None) -> ()
  
  auto dispatch_sym_constrain_range = [](const at::Scalar & size, ::std::optional<int64_t> min, ::std::optional<int64_t> max) -> void {
    pybind11::gil_scoped_release no_gil;
    at::sym_constrain_range(size, min, max);
  };
  dispatch_sym_constrain_range(_r.scalar(0), _r.toInt64Optional(1), _r.toInt64Optional(2));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sym_constrain_range_for_size
static PyObject * THPVariable_sym_constrain_range_for_size(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sym_constrain_range_for_size(Scalar size, *, int64_t? min=None, int64_t? max=None)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sym_constrain_range_for_size(Scalar size, *, int? min=None, int? max=None) -> ()
  
  auto dispatch_sym_constrain_range_for_size = [](const at::Scalar & size, ::std::optional<int64_t> min, ::std::optional<int64_t> max) -> void {
    pybind11::gil_scoped_release no_gil;
    at::sym_constrain_range_for_size(size, min, max);
  };
  dispatch_sym_constrain_range_for_size(_r.scalar(0), _r.toInt64Optional(1), _r.toInt64Optional(2));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _functional_sym_constrain_range
static PyObject * THPVariable__functional_sym_constrain_range(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_functional_sym_constrain_range(Scalar size, int64_t? min, int64_t? max, Tensor dep_token)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_functional_sym_constrain_range(Scalar size, int? min, int? max, Tensor dep_token) -> Tensor
  
  auto dispatch__functional_sym_constrain_range = [](const at::Scalar & size, ::std::optional<int64_t> min, ::std::optional<int64_t> max, const at::Tensor & dep_token) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_functional_sym_constrain_range(size, min, max, dep_token);
  };
  return wrap(dispatch__functional_sym_constrain_range(_r.scalar(0), _r.toInt64Optional(1), _r.toInt64Optional(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _functional_sym_constrain_range_for_size
static PyObject * THPVariable__functional_sym_constrain_range_for_size(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_functional_sym_constrain_range_for_size(Scalar size, int64_t? min, int64_t? max, Tensor dep_token)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_functional_sym_constrain_range_for_size(Scalar size, int? min, int? max, Tensor dep_token) -> Tensor
  
  auto dispatch__functional_sym_constrain_range_for_size = [](const at::Scalar & size, ::std::optional<int64_t> min, ::std::optional<int64_t> max, const at::Tensor & dep_token) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_functional_sym_constrain_range_for_size(size, min, max, dep_token);
  };
  return wrap(dispatch__functional_sym_constrain_range_for_size(_r.scalar(0), _r.toInt64Optional(1), _r.toInt64Optional(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _make_dep_token
static PyObject * THPVariable__make_dep_token(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_make_dep_token(*, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_make_dep_token(*, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(1))
      .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(2))
      .requires_grad(_r.toBool(5))
      .pinned_memory(_r.toBool(4));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch__make_dep_token = [](at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::_make_dep_token(options, memory_format);
  };
  return wrap(dispatch__make_dep_token(options, _r.memoryformatOptional(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _use_cudnn_ctc_loss
static PyObject * THPVariable__use_cudnn_ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_use_cudnn_ctc_loss(Tensor log_probs, Tensor targets, IntArrayRef input_lengths, IntArrayRef target_lengths, int64_t blank)",
    "_use_cudnn_ctc_loss(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int64_t blank)",
  }, /*traceable=*/false);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_use_cudnn_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank) -> bool
      
      auto dispatch__use_cudnn_ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, at::IntArrayRef input_lengths, at::IntArrayRef target_lengths, int64_t blank) -> bool {
        pybind11::gil_scoped_release no_gil;
        return at::_use_cudnn_ctc_loss(log_probs, targets, input_lengths, target_lengths, blank);
      };
      return wrap(dispatch__use_cudnn_ctc_loss(_r.tensor(0), _r.tensor(1), _r.intlist(2), _r.intlist(3), _r.toInt64(4)));
    }
    case 1: {
      // aten::_use_cudnn_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank) -> bool
      
      auto dispatch__use_cudnn_ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, const at::Tensor & input_lengths, const at::Tensor & target_lengths, int64_t blank) -> bool {
        pybind11::gil_scoped_release no_gil;
        return at::_use_cudnn_ctc_loss(log_probs, targets, input_lengths, target_lengths, blank);
      };
      return wrap(dispatch__use_cudnn_ctc_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.toInt64(4)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _cudnn_ctc_loss
static PyObject * THPVariable__cudnn_ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cudnn_ctc_loss(Tensor log_probs, Tensor targets, IntArrayRef input_lengths, IntArrayRef target_lengths, int64_t blank, bool deterministic, bool zero_infinity)",
    "_cudnn_ctc_loss(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int64_t blank, bool deterministic, bool zero_infinity)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_cudnn_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor)
      
      auto dispatch__cudnn_ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, at::IntArrayRef input_lengths, at::IntArrayRef target_lengths, int64_t blank, bool deterministic, bool zero_infinity) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_cudnn_ctc_loss(log_probs, targets, input_lengths, target_lengths, blank, deterministic, zero_infinity);
      };
      return wrap(dispatch__cudnn_ctc_loss(_r.tensor(0), _r.tensor(1), _r.intlist(2), _r.intlist(3), _r.toInt64(4), _r.toBool(5), _r.toBool(6)));
    }
    case 1: {
      // aten::_cudnn_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor)
      
      auto dispatch__cudnn_ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, const at::Tensor & input_lengths, const at::Tensor & target_lengths, int64_t blank, bool deterministic, bool zero_infinity) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_cudnn_ctc_loss(log_probs, targets, input_lengths, target_lengths, blank, deterministic, zero_infinity);
      };
      return wrap(dispatch__cudnn_ctc_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.toInt64(4), _r.toBool(5), _r.toBool(6)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _use_cudnn_rnn_flatten_weight
static PyObject * THPVariable__use_cudnn_rnn_flatten_weight(PyObject* self_, PyObject* args)
{
  HANDLE_TH_ERRORS

  // aten::_use_cudnn_rnn_flatten_weight() -> bool
  
  auto dispatch__use_cudnn_rnn_flatten_weight = []() -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::_use_cudnn_rnn_flatten_weight();
  };
  return wrap(dispatch__use_cudnn_rnn_flatten_weight());
  END_HANDLE_TH_ERRORS
}

// _cudnn_rnn_flatten_weight
static PyObject * THPVariable__cudnn_rnn_flatten_weight(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cudnn_rnn_flatten_weight(TensorList weight_arr, int64_t weight_stride0, SymInt input_size, int64_t mode, SymInt hidden_size, SymInt proj_size, int64_t num_layers, bool batch_first, bool bidirectional)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cudnn_rnn_flatten_weight(Tensor[] weight_arr, int weight_stride0, SymInt input_size, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, bool bidirectional) -> Tensor
  
  auto dispatch__cudnn_rnn_flatten_weight = [](at::TensorList weight_arr, int64_t weight_stride0, c10::SymInt input_size, int64_t mode, c10::SymInt hidden_size, c10::SymInt proj_size, int64_t num_layers, bool batch_first, bool bidirectional) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cudnn_rnn_flatten_weight_symint(weight_arr, weight_stride0, input_size, mode, hidden_size, proj_size, num_layers, batch_first, bidirectional);
  };
  return wrap(dispatch__cudnn_rnn_flatten_weight(_r.tensorlist(0), _r.toInt64(1), _r.toSymInt(2), _r.toInt64(3), _r.toSymInt(4), _r.toSymInt(5), _r.toInt64(6), _r.toBool(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cudnn_rnn
static PyObject * THPVariable__cudnn_rnn(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cudnn_rnn(Tensor input, TensorList weight, int64_t weight_stride0, Tensor? weight_buf, Tensor hx, Tensor? cx, int64_t mode, SymInt hidden_size, SymInt proj_size, int64_t num_layers, bool batch_first, double dropout, bool train, bool bidirectional, SymIntArrayRef batch_sizes, Tensor? dropout_state)",
  }, /*traceable=*/true);

  ParsedArgs<16> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cudnn_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor? weight_buf, Tensor hx, Tensor? cx, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, SymInt[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch__cudnn_rnn = [](const at::Tensor & input, at::TensorList weight, int64_t weight_stride0, const ::std::optional<at::Tensor> & weight_buf, const at::Tensor & hx, const ::std::optional<at::Tensor> & cx, int64_t mode, c10::SymInt hidden_size, c10::SymInt proj_size, int64_t num_layers, bool batch_first, double dropout, bool train, bool bidirectional, c10::SymIntArrayRef batch_sizes, const ::std::optional<at::Tensor> & dropout_state) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_cudnn_rnn_symint(input, weight, weight_stride0, weight_buf, hx, cx, mode, hidden_size, proj_size, num_layers, batch_first, dropout, train, bidirectional, batch_sizes, dropout_state);
  };
  return wrap(dispatch__cudnn_rnn(_r.tensor(0), _r.tensorlist(1), _r.toInt64(2), _r.optionalTensor(3), _r.tensor(4), _r.optionalTensor(5), _r.toInt64(6), _r.toSymInt(7), _r.toSymInt(8), _r.toInt64(9), _r.toBool(10), _r.toDouble(11), _r.toBool(12), _r.toBool(13), _r.symintlist(14), _r.optionalTensor(15)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cudnn_init_dropout_state
static PyObject * THPVariable__cudnn_init_dropout_state(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cudnn_init_dropout_state(double dropout, bool train, int64_t dropout_seed, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cudnn_init_dropout_state(float dropout, bool train, int dropout_seed, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(3))
      .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(4))
      .requires_grad(_r.toBool(7))
      .pinned_memory(_r.toBool(6));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch__cudnn_init_dropout_state = [](double dropout, bool train, int64_t dropout_seed, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::_cudnn_init_dropout_state(dropout, train, dropout_seed, options);
  };
  return wrap(dispatch__cudnn_init_dropout_state(_r.toDouble(0), _r.toBool(1), _r.toInt64(2), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _debug_has_internal_overlap
static PyObject * THPVariable__debug_has_internal_overlap(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_debug_has_internal_overlap(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_debug_has_internal_overlap(Tensor self) -> int
  
  auto dispatch__debug_has_internal_overlap = [](const at::Tensor & self) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return at::_debug_has_internal_overlap(self);
  };
  return wrap(dispatch__debug_has_internal_overlap(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fused_dropout
static PyObject * THPVariable__fused_dropout(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fused_dropout(Tensor input, double p, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fused_dropout(Tensor self, float p, Generator? generator=None) -> (Tensor, Tensor)
  
  auto dispatch__fused_dropout = [](const at::Tensor & self, double p, ::std::optional<at::Generator> generator) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_fused_dropout(self, p, generator);
  };
  return wrap(dispatch__fused_dropout(_r.tensor(0), _r.toDouble(1), _r.generator(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _masked_scale
static PyObject * THPVariable__masked_scale(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_masked_scale(Tensor input, Tensor mask, double scale)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_masked_scale(Tensor self, Tensor mask, float scale) -> Tensor
  
  auto dispatch__masked_scale = [](const at::Tensor & self, const at::Tensor & mask, double scale) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_masked_scale(self, mask, scale);
  };
  return wrap(dispatch__masked_scale(_r.tensor(0), _r.tensor(1), _r.toDouble(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// native_dropout
static PyObject * THPVariable_native_dropout(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "native_dropout(Tensor input, double p, bool? train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::native_dropout(Tensor input, float p, bool? train) -> (Tensor, Tensor)
  
  auto dispatch_native_dropout = [](const at::Tensor & input, double p, ::std::optional<bool> train) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::native_dropout(input, p, train);
  };
  return wrap(dispatch_native_dropout(_r.tensor(0), _r.toDouble(1), _r.toBoolOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sobol_engine_draw
static PyObject * THPVariable__sobol_engine_draw(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sobol_engine_draw(Tensor quasi, int64_t n, Tensor sobolstate, int64_t dimension, int64_t num_generated, ScalarType? dtype)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sobol_engine_draw(Tensor quasi, int n, Tensor sobolstate, int dimension, int num_generated, ScalarType? dtype) -> (Tensor, Tensor)
  
  auto dispatch__sobol_engine_draw = [](const at::Tensor & quasi, int64_t n, const at::Tensor & sobolstate, int64_t dimension, int64_t num_generated, ::std::optional<at::ScalarType> dtype) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_sobol_engine_draw(quasi, n, sobolstate, dimension, num_generated, dtype);
  };
  return wrap(dispatch__sobol_engine_draw(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.scalartypeOptional(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sobol_engine_ff_
static PyObject * THPVariable__sobol_engine_ff_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sobol_engine_ff_(Tensor input, int64_t n, Tensor sobolstate, int64_t dimension, int64_t num_generated)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sobol_engine_ff_(Tensor(a!) self, int n, Tensor sobolstate, int dimension, int num_generated) -> Tensor(a!)
  
  auto dispatch__sobol_engine_ff_ = [](at::Tensor self, int64_t n, const at::Tensor & sobolstate, int64_t dimension, int64_t num_generated) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sobol_engine_ff_(self, n, sobolstate, dimension, num_generated);
  };
  return wrap(dispatch__sobol_engine_ff_(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sobol_engine_scramble_
static PyObject * THPVariable__sobol_engine_scramble_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sobol_engine_scramble_(Tensor input, Tensor ltm, int64_t dimension)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sobol_engine_scramble_(Tensor(a!) self, Tensor ltm, int dimension) -> Tensor(a!)
  
  auto dispatch__sobol_engine_scramble_ = [](at::Tensor self, const at::Tensor & ltm, int64_t dimension) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sobol_engine_scramble_(self, ltm, dimension);
  };
  return wrap(dispatch__sobol_engine_scramble_(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sobol_engine_initialize_state_
static PyObject * THPVariable__sobol_engine_initialize_state_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sobol_engine_initialize_state_(Tensor input, int64_t dimension)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sobol_engine_initialize_state_(Tensor(a!) self, int dimension) -> Tensor(a!)
  
  auto dispatch__sobol_engine_initialize_state_ = [](at::Tensor self, int64_t dimension) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sobol_engine_initialize_state_(self, dimension);
  };
  return wrap(dispatch__sobol_engine_initialize_state_(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _reshape_from_tensor
static PyObject * THPVariable__reshape_from_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_reshape_from_tensor(Tensor input, Tensor shape)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_reshape_from_tensor(Tensor self, Tensor shape) -> Tensor
  
  auto dispatch__reshape_from_tensor = [](const at::Tensor & self, const at::Tensor & shape) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_reshape_from_tensor(self, shape);
  };
  return wrap(dispatch__reshape_from_tensor(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _shape_as_tensor
static PyObject * THPVariable__shape_as_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_shape_as_tensor(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_shape_as_tensor(Tensor self) -> Tensor
  
  auto dispatch__shape_as_tensor = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_shape_as_tensor(self);
  };
  return wrap(dispatch__shape_as_tensor(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// dropout
static PyObject * THPVariable_dropout(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dropout(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::dropout(Tensor input, float p, bool train) -> Tensor
  
  auto dispatch_dropout = [](const at::Tensor & input, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::dropout(input, p, train);
  };
  return wrap(dispatch_dropout(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// dropout_
static PyObject * THPVariable_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dropout_(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!)
  
  auto dispatch_dropout_ = [](at::Tensor self, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::dropout_(self, p, train);
  };
  return wrap(dispatch_dropout_(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// feature_dropout
static PyObject * THPVariable_feature_dropout(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "feature_dropout(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::feature_dropout(Tensor input, float p, bool train) -> Tensor
  
  auto dispatch_feature_dropout = [](const at::Tensor & input, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::feature_dropout(input, p, train);
  };
  return wrap(dispatch_feature_dropout(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// feature_dropout_
static PyObject * THPVariable_feature_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "feature_dropout_(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::feature_dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!)
  
  auto dispatch_feature_dropout_ = [](at::Tensor self, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::feature_dropout_(self, p, train);
  };
  return wrap(dispatch_feature_dropout_(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// alpha_dropout
static PyObject * THPVariable_alpha_dropout(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "alpha_dropout(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::alpha_dropout(Tensor input, float p, bool train) -> Tensor
  
  auto dispatch_alpha_dropout = [](const at::Tensor & input, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::alpha_dropout(input, p, train);
  };
  return wrap(dispatch_alpha_dropout(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// alpha_dropout_
static PyObject * THPVariable_alpha_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "alpha_dropout_(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::alpha_dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!)
  
  auto dispatch_alpha_dropout_ = [](at::Tensor self, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::alpha_dropout_(self, p, train);
  };
  return wrap(dispatch_alpha_dropout_(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// feature_alpha_dropout
static PyObject * THPVariable_feature_alpha_dropout(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "feature_alpha_dropout(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::feature_alpha_dropout(Tensor input, float p, bool train) -> Tensor
  
  auto dispatch_feature_alpha_dropout = [](const at::Tensor & input, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::feature_alpha_dropout(input, p, train);
  };
  return wrap(dispatch_feature_alpha_dropout(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// feature_alpha_dropout_
static PyObject * THPVariable_feature_alpha_dropout_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "feature_alpha_dropout_(Tensor input, double p, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::feature_alpha_dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!)
  
  auto dispatch_feature_alpha_dropout_ = [](at::Tensor self, double p, bool train) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::feature_alpha_dropout_(self, p, train);
  };
  return wrap(dispatch_feature_alpha_dropout_(_r.tensor(0), _r.toDouble(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// abs
static PyObject * THPVariable_abs(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "abs(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::abs(Tensor self) -> Tensor
    
    auto dispatch_abs = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.abs();
    };
    return wrap(dispatch_abs(_r.tensor(0)));
  } else {
    // aten::abs.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_abs_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::abs_out(out, self);
    };
    return wrap(dispatch_abs_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// abs_
static PyObject * THPVariable_abs_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "abs_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::abs_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_abs_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.abs_();
  };
  return wrap(dispatch_abs_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// absolute
static PyObject * THPVariable_absolute(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "absolute(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::absolute(Tensor self) -> Tensor
    
    auto dispatch_absolute = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.absolute();
    };
    return wrap(dispatch_absolute(_r.tensor(0)));
  } else {
    // aten::absolute.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_absolute_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::absolute_out(out, self);
    };
    return wrap(dispatch_absolute_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// angle
static PyObject * THPVariable_angle(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "angle(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::angle(Tensor self) -> Tensor
    
    auto dispatch_angle = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.angle();
    };
    return wrap(dispatch_angle(_r.tensor(0)));
  } else {
    // aten::angle.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_angle_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::angle_out(out, self);
    };
    return wrap(dispatch_angle_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// view_as_real
static PyObject * THPVariable_view_as_real(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "view_as_real(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::view_as_real(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_view_as_real = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::view_as_real(self);
  };
  return wrap(dispatch_view_as_real(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// view_as_complex
static PyObject * THPVariable_view_as_complex(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "view_as_complex(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::view_as_complex(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_view_as_complex = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::view_as_complex(self);
  };
  return wrap(dispatch_view_as_complex(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sgn
static PyObject * THPVariable_sgn(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sgn(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sgn(Tensor self) -> Tensor
    
    auto dispatch_sgn = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sgn();
    };
    return wrap(dispatch_sgn(_r.tensor(0)));
  } else {
    // aten::sgn.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sgn_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sgn_out(out, self);
    };
    return wrap(dispatch_sgn_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// real
static PyObject * THPVariable_real(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "real(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::real(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_real = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::real(self);
  };
  return wrap(dispatch_real(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// imag
static PyObject * THPVariable_imag(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "imag(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::imag(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_imag = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::imag(self);
  };
  return wrap(dispatch_imag(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _conj
static PyObject * THPVariable__conj(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_conj(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_conj(Tensor(a) self) -> Tensor(a)
  
  auto dispatch__conj = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self._conj();
  };
  return wrap(dispatch__conj(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conj
static PyObject * THPVariable_conj(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conj(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::conj(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_conj = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.conj();
  };
  return wrap(dispatch_conj(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _conj_physical
static PyObject * THPVariable__conj_physical(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_conj_physical(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_conj_physical(Tensor self) -> Tensor
  
  auto dispatch__conj_physical = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self._conj_physical();
  };
  return wrap(dispatch__conj_physical(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conj_physical
static PyObject * THPVariable_conj_physical(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conj_physical(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::conj_physical(Tensor self) -> Tensor
    
    auto dispatch_conj_physical = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.conj_physical();
    };
    return wrap(dispatch_conj_physical(_r.tensor(0)));
  } else {
    // aten::conj_physical.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_conj_physical_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::conj_physical_out(out, self);
    };
    return wrap(dispatch_conj_physical_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conj_physical_
static PyObject * THPVariable_conj_physical_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conj_physical_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::conj_physical_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_conj_physical_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.conj_physical_();
  };
  return wrap(dispatch_conj_physical_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// resolve_conj
static PyObject * THPVariable_resolve_conj(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "resolve_conj(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::resolve_conj(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_resolve_conj = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.resolve_conj();
  };
  return wrap(dispatch_resolve_conj(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// resolve_neg
static PyObject * THPVariable_resolve_neg(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "resolve_neg(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::resolve_neg(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_resolve_neg = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.resolve_neg();
  };
  return wrap(dispatch_resolve_neg(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _neg_view
static PyObject * THPVariable__neg_view(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_neg_view(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_neg_view(Tensor(a) self) -> Tensor(a)
  
  auto dispatch__neg_view = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self._neg_view();
  };
  return wrap(dispatch__neg_view(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// acos
static PyObject * THPVariable_acos(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "acos(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::acos(Tensor self) -> Tensor
    
    auto dispatch_acos = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.acos();
    };
    return wrap(dispatch_acos(_r.tensor(0)));
  } else {
    // aten::acos.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_acos_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::acos_out(out, self);
    };
    return wrap(dispatch_acos_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// acos_
static PyObject * THPVariable_acos_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "acos_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::acos_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_acos_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.acos_();
  };
  return wrap(dispatch_acos_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arccos
static PyObject * THPVariable_arccos(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arccos(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::arccos(Tensor self) -> Tensor
    
    auto dispatch_arccos = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arccos();
    };
    return wrap(dispatch_arccos(_r.tensor(0)));
  } else {
    // aten::arccos.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arccos_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arccos_out(out, self);
    };
    return wrap(dispatch_arccos_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arccos_
static PyObject * THPVariable_arccos_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arccos_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::arccos_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_arccos_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.arccos_();
  };
  return wrap(dispatch_arccos_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// avg_pool1d
static PyObject * THPVariable_avg_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "avg_pool1d(Tensor input, IntArrayRef[1] kernel_size, IntArrayRef[1] stride=None, IntArrayRef[1] padding=0, bool ceil_mode=False, bool count_include_pad=True)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::avg_pool1d(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, bool ceil_mode=False, bool count_include_pad=True) -> Tensor
  
  auto dispatch_avg_pool1d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, bool ceil_mode, bool count_include_pad) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::avg_pool1d(self, kernel_size, stride, padding, ceil_mode, count_include_pad);
  };
  return wrap(dispatch_avg_pool1d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.toBool(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// adaptive_avg_pool1d
static PyObject * THPVariable_adaptive_avg_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "adaptive_avg_pool1d(Tensor input, IntArrayRef[1] output_size)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::adaptive_avg_pool1d(Tensor self, int[1] output_size) -> Tensor
  
  auto dispatch_adaptive_avg_pool1d = [](const at::Tensor & self, at::IntArrayRef output_size) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::adaptive_avg_pool1d(self, output_size);
  };
  return wrap(dispatch_adaptive_avg_pool1d(_r.tensor(0), _r.intlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// adaptive_max_pool1d
static PyObject * THPVariable_adaptive_max_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "adaptive_max_pool1d(Tensor input, IntArrayRef[1] output_size)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::adaptive_max_pool1d(Tensor self, int[1] output_size) -> (Tensor, Tensor)
  
  auto dispatch_adaptive_max_pool1d = [](const at::Tensor & self, at::IntArrayRef output_size) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::adaptive_max_pool1d(self, output_size);
  };
  return wrap(dispatch_adaptive_max_pool1d(_r.tensor(0), _r.intlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// add
static PyObject * THPVariable_add(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "add(Tensor input, Scalar alpha, Tensor other, *, Tensor out=None)|deprecated",
    "add(Tensor input, Tensor other, *, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // [deprecated] aten::add(Tensor self, Scalar alpha, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_add = [](at::Tensor out, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.add(other, alpha);
        };
        return wrap(dispatch_add(_r.tensor(3), _r.tensor(0), _r.scalar(1), _r.tensor(2)));
      } else {
        // [deprecated] aten::add(Tensor self, Scalar alpha, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_add_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::add_out(out, self, other, alpha);
        };
        return wrap(dispatch_add_out(_r.tensor(3), _r.tensor(0), _r.scalar(1), _r.tensor(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::add.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor
        
        auto dispatch_add = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.add(other, alpha);
        };
        return wrap(dispatch_add(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
      } else {
        // aten::add.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_add_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::add_out(out, self, other, alpha);
        };
        return wrap(dispatch_add_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.scalar(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _add_relu
static PyObject * THPVariable__add_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_add_relu(Tensor input, Tensor other, *, Scalar alpha=1, Tensor out=None)",
    "_add_relu(Tensor input, Scalar other, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::_add_relu.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor
        
        auto dispatch__add_relu = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::_add_relu(self, other, alpha);
        };
        return wrap(dispatch__add_relu(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
      } else {
        // aten::_add_relu.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch__add_relu_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::_add_relu_out(out, self, other, alpha);
        };
        return wrap(dispatch__add_relu_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.scalar(2)));
      }
    }
    case 1: {
      // aten::_add_relu.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor
      
      auto dispatch__add_relu = [](const at::Tensor & self, const at::Scalar & other, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_add_relu(self, other, alpha);
      };
      return wrap(dispatch__add_relu(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _add_relu_
static PyObject * THPVariable__add_relu_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_add_relu_(Tensor input, Tensor other, *, Scalar alpha=1)",
    "_add_relu_(Tensor input, Scalar other, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_add_relu_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!)
      
      auto dispatch__add_relu_ = [](at::Tensor self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_add_relu_(self, other, alpha);
      };
      return wrap(dispatch__add_relu_(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
    }
    case 1: {
      // aten::_add_relu_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!)
      
      auto dispatch__add_relu_ = [](at::Tensor self, const at::Scalar & other, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_add_relu_(self, other, alpha);
      };
      return wrap(dispatch__add_relu_(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addmv
static PyObject * THPVariable_addmv(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addmv(Scalar beta, Tensor input, Scalar alpha, Tensor mat, Tensor vec, *, Tensor out=None)|deprecated",
    "addmv(Scalar beta, Tensor input, Tensor mat, Tensor vec, *, Tensor out=None)|deprecated",
    "addmv(Tensor input, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // [deprecated] aten::addmv(Scalar beta, Tensor self, Scalar alpha, Tensor mat, Tensor vec, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmv = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & mat, const at::Tensor & vec) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addmv(mat, vec, beta, alpha);
        };
        return wrap(dispatch_addmv(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      } else {
        // [deprecated] aten::addmv(Scalar beta, Tensor self, Scalar alpha, Tensor mat, Tensor vec, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmv_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & mat, const at::Tensor & vec) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addmv_out(out, self, mat, vec, beta, alpha);
        };
        return wrap(dispatch_addmv_out(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // [deprecated] aten::addmv(Scalar beta, Tensor self, Tensor mat, Tensor vec, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmv = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & mat, const at::Tensor & vec) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addmv(mat, vec, beta, 1);
        };
        return wrap(dispatch_addmv(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::addmv(Scalar beta, Tensor self, Tensor mat, Tensor vec, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmv_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & mat, const at::Tensor & vec) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addmv_out(out, self, mat, vec, beta, 1);
        };
        return wrap(dispatch_addmv_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::addmv(Tensor self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1) -> Tensor
        
        auto dispatch_addmv = [](const at::Tensor & self, const at::Tensor & mat, const at::Tensor & vec, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addmv(mat, vec, beta, alpha);
        };
        return wrap(dispatch_addmv(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      } else {
        // aten::addmv.out(Tensor self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmv_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat, const at::Tensor & vec, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addmv_out(out, self, mat, vec, beta, alpha);
        };
        return wrap(dispatch_addmv_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addmv_
static PyObject * THPVariable_addmv_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addmv_(Scalar beta, Tensor input, Scalar alpha, Tensor mat, Tensor vec)|deprecated",
    "addmv_(Scalar beta, Tensor input, Tensor mat, Tensor vec)|deprecated",
    "addmv_(Tensor input, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // [deprecated] aten::addmv_(Scalar beta, Tensor(a!) self, Scalar alpha, Tensor mat, Tensor vec) -> Tensor(a!)
      
      auto dispatch_addmv_ = [](const at::Scalar & beta, at::Tensor self, const at::Scalar & alpha, const at::Tensor & mat, const at::Tensor & vec) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.addmv_(mat, vec, beta, alpha);
      };
      return wrap(dispatch_addmv_(_r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
    }
    case 1: {
      // [deprecated] aten::addmv_(Scalar beta, Tensor(a!) self, Tensor mat, Tensor vec) -> Tensor(a!)
      
      auto dispatch_addmv_ = [](const at::Scalar & beta, at::Tensor self, const at::Tensor & mat, const at::Tensor & vec) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.addmv_(mat, vec, beta, 1);
      };
      return wrap(dispatch_addmv_(_r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
    }
    case 2: {
      // aten::addmv_(Tensor(a!) self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1) -> Tensor(a!)
      
      auto dispatch_addmv_ = [](at::Tensor self, const at::Tensor & mat, const at::Tensor & vec, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.addmv_(mat, vec, beta, alpha);
      };
      return wrap(dispatch_addmv_(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addr
static PyObject * THPVariable_addr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addr(Scalar beta, Tensor input, Scalar alpha, Tensor vec1, Tensor vec2, *, Tensor out=None)|deprecated",
    "addr(Scalar beta, Tensor input, Tensor vec1, Tensor vec2, *, Tensor out=None)|deprecated",
    "addr(Tensor input, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // [deprecated] aten::addr(Scalar beta, Tensor self, Scalar alpha, Tensor vec1, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addr = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & vec1, const at::Tensor & vec2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addr(vec1, vec2, beta, alpha);
        };
        return wrap(dispatch_addr(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      } else {
        // [deprecated] aten::addr(Scalar beta, Tensor self, Scalar alpha, Tensor vec1, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addr_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & vec1, const at::Tensor & vec2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addr_out(out, self, vec1, vec2, beta, alpha);
        };
        return wrap(dispatch_addr_out(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // [deprecated] aten::addr(Scalar beta, Tensor self, Tensor vec1, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addr = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & vec1, const at::Tensor & vec2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addr(vec1, vec2, beta, 1);
        };
        return wrap(dispatch_addr(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::addr(Scalar beta, Tensor self, Tensor vec1, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addr_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & vec1, const at::Tensor & vec2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addr_out(out, self, vec1, vec2, beta, 1);
        };
        return wrap(dispatch_addr_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::addr(Tensor self, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1) -> Tensor
        
        auto dispatch_addr = [](const at::Tensor & self, const at::Tensor & vec1, const at::Tensor & vec2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addr(vec1, vec2, beta, alpha);
        };
        return wrap(dispatch_addr(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      } else {
        // aten::addr.out(Tensor self, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addr_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & vec1, const at::Tensor & vec2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addr_out(out, self, vec1, vec2, beta, alpha);
        };
        return wrap(dispatch_addr_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// affine_grid_generator
static PyObject * THPVariable_affine_grid_generator(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "affine_grid_generator(Tensor theta, SymIntArrayRef size, bool align_corners)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::affine_grid_generator(Tensor theta, SymInt[] size, bool align_corners) -> Tensor
  
  auto dispatch_affine_grid_generator = [](const at::Tensor & theta, c10::SymIntArrayRef size, bool align_corners) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::affine_grid_generator_symint(theta, size, align_corners);
  };
  return wrap(dispatch_affine_grid_generator(_r.tensor(0), _r.symintlist(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _is_all_true
static PyObject * THPVariable__is_all_true(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_is_all_true(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_is_all_true(Tensor self) -> Tensor
  
  auto dispatch__is_all_true = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self._is_all_true();
  };
  return wrap(dispatch__is_all_true(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _is_any_true
static PyObject * THPVariable__is_any_true(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_is_any_true(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_is_any_true(Tensor self) -> Tensor
  
  auto dispatch__is_any_true = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self._is_any_true();
  };
  return wrap(dispatch__is_any_true(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _test_check_tensor
static PyObject * THPVariable__test_check_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_check_tensor(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_test_check_tensor(Tensor self) -> Tensor
  
  auto dispatch__test_check_tensor = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_test_check_tensor(self);
  };
  return wrap(dispatch__test_check_tensor(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _test_functorch_fallback
static PyObject * THPVariable__test_functorch_fallback(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_functorch_fallback(Tensor input, Tensor other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_test_functorch_fallback(Tensor self, Tensor other) -> Tensor
  
  auto dispatch__test_functorch_fallback = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_test_functorch_fallback(self, other);
  };
  return wrap(dispatch__test_functorch_fallback(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// all
static PyObject * THPVariable_all(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "all(Tensor input, *, Tensor out=None)",
    "all(Tensor input, IntArrayRef? dim=None, bool keepdim=False, *, Tensor out=None)",
    "all(Tensor input, int64_t dim, bool keepdim=False, *, Tensor out=None)",
    "all(Tensor input, Dimname dim, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::all(Tensor self) -> Tensor
        
        auto dispatch_all = [](const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.all();
        };
        return wrap(dispatch_all(_r.tensor(0)));
      } else {
        // aten::all.all_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_all_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::all_out(out, self);
        };
        return wrap(dispatch_all_out(_r.tensor(1), _r.tensor(0)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::all.dims(Tensor self, int[]? dim=None, bool keepdim=False) -> Tensor
        
        auto dispatch_all = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.all(dim, keepdim);
        };
        return wrap(dispatch_all(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2)));
      } else {
        // aten::all.dims_out(Tensor self, int[]? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_all_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::all_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_all_out(_r.tensor(3), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::all.dim(Tensor self, int dim, bool keepdim=False) -> Tensor
        
        auto dispatch_all = [](const at::Tensor & self, int64_t dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.all(dim, keepdim);
        };
        return wrap(dispatch_all(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::all.out(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_all_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::all_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_all_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::all.dimname(Tensor self, Dimname dim, bool keepdim=False) -> Tensor
        
        auto dispatch_all = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.all(dim, keepdim);
        };
        return wrap(dispatch_all(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::all.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_all_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::all_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_all_out(_r.tensor(3), _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// allclose
static PyObject * THPVariable_allclose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "allclose(Tensor input, Tensor other, double rtol=1e-05, double atol=1e-08, bool equal_nan=False)",
  }, /*traceable=*/false);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::allclose(Tensor self, Tensor other, float rtol=1e-05, float atol=1e-08, bool equal_nan=False) -> bool
  
  auto dispatch_allclose = [](const at::Tensor & self, const at::Tensor & other, double rtol, double atol, bool equal_nan) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.allclose(other, rtol, atol, equal_nan);
  };
  return wrap(dispatch_allclose(_r.tensor(0), _r.tensor(1), _r.toDouble(2), _r.toDouble(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// any
static PyObject * THPVariable_any(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "any(Tensor input, *, Tensor out=None)",
    "any(Tensor input, IntArrayRef? dim=None, bool keepdim=False, *, Tensor out=None)",
    "any(Tensor input, int64_t dim, bool keepdim=False, *, Tensor out=None)",
    "any(Tensor input, Dimname dim, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::any(Tensor self) -> Tensor
        
        auto dispatch_any = [](const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.any();
        };
        return wrap(dispatch_any(_r.tensor(0)));
      } else {
        // aten::any.all_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_any_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::any_out(out, self);
        };
        return wrap(dispatch_any_out(_r.tensor(1), _r.tensor(0)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::any.dims(Tensor self, int[]? dim=None, bool keepdim=False) -> Tensor
        
        auto dispatch_any = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.any(dim, keepdim);
        };
        return wrap(dispatch_any(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2)));
      } else {
        // aten::any.dims_out(Tensor self, int[]? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_any_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::any_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_any_out(_r.tensor(3), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::any.dim(Tensor self, int dim, bool keepdim=False) -> Tensor
        
        auto dispatch_any = [](const at::Tensor & self, int64_t dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.any(dim, keepdim);
        };
        return wrap(dispatch_any(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::any.out(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_any_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::any_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_any_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::any.dimname(Tensor self, Dimname dim, bool keepdim=False) -> Tensor
        
        auto dispatch_any = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.any(dim, keepdim);
        };
        return wrap(dispatch_any(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::any.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_any_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::any_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_any_out(_r.tensor(3), _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// arange
static PyObject * THPVariable_arange(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arange(Scalar end, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "arange(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "arange(Scalar start, Scalar end, Scalar step=1, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::arange(Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(2))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_arange = [](const at::Scalar & end, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::arange(end, options);
        };
        return wrap(dispatch_arange(_r.scalar(0), options));
      } else {
        // aten::arange.out(Scalar end, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeOptional(2),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_arange_out = [](at::Tensor out, const at::Scalar & end) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::arange_out(out, end);
        };
        return wrap(dispatch_arange_out(_r.tensor(1), _r.scalar(0)).set_requires_grad(_r.toBool(6)));
      }
    }
    case 1: {
      // aten::arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_arange = [](const at::Scalar & start, const at::Scalar & end, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::arange(start, end, options);
      };
      return wrap(dispatch_arange(_r.scalar(0), _r.scalar(1), options));
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::arange.start_step(Scalar start, Scalar end, Scalar step=1, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(4))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_arange = [](const at::Scalar & start, const at::Scalar & end, const at::Scalar & step, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::arange(start, end, step, options);
        };
        return wrap(dispatch_arange(_r.scalar(0), _r.scalar(1), _r.scalar(2), options));
      } else {
        // aten::arange.start_out(Scalar start, Scalar end, Scalar step=1, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeOptional(4),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_arange_out = [](at::Tensor out, const at::Scalar & start, const at::Scalar & end, const at::Scalar & step) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::arange_out(out, start, end, step);
        };
        return wrap(dispatch_arange_out(_r.tensor(3), _r.scalar(0), _r.scalar(1), _r.scalar(2)).set_requires_grad(_r.toBool(8)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _dim_arange
static PyObject * THPVariable__dim_arange(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_dim_arange(Tensor like, int64_t dim)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_dim_arange(Tensor like, int dim) -> Tensor
  
  auto dispatch__dim_arange = [](const at::Tensor & like, int64_t dim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_dim_arange(like, dim);
  };
  return wrap(dispatch__dim_arange(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// argmax
static PyObject * THPVariable_argmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "argmax(Tensor input, int64_t? dim=None, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensor
    
    auto dispatch_argmax = [](const at::Tensor & self, ::std::optional<int64_t> dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.argmax(dim, keepdim);
    };
    return wrap(dispatch_argmax(_r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  } else {
    // aten::argmax.out(Tensor self, int? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_argmax_out = [](at::Tensor out, const at::Tensor & self, ::std::optional<int64_t> dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::argmax_out(out, self, dim, keepdim);
    };
    return wrap(dispatch_argmax_out(_r.tensor(3), _r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// argmin
static PyObject * THPVariable_argmin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "argmin(Tensor input, int64_t? dim=None, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::argmin(Tensor self, int? dim=None, bool keepdim=False) -> Tensor
    
    auto dispatch_argmin = [](const at::Tensor & self, ::std::optional<int64_t> dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.argmin(dim, keepdim);
    };
    return wrap(dispatch_argmin(_r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  } else {
    // aten::argmin.out(Tensor self, int? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_argmin_out = [](at::Tensor out, const at::Tensor & self, ::std::optional<int64_t> dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::argmin_out(out, self, dim, keepdim);
    };
    return wrap(dispatch_argmin_out(_r.tensor(3), _r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// acosh
static PyObject * THPVariable_acosh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "acosh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::acosh(Tensor self) -> Tensor
    
    auto dispatch_acosh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.acosh();
    };
    return wrap(dispatch_acosh(_r.tensor(0)));
  } else {
    // aten::acosh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_acosh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::acosh_out(out, self);
    };
    return wrap(dispatch_acosh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// acosh_
static PyObject * THPVariable_acosh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "acosh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::acosh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_acosh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.acosh_();
  };
  return wrap(dispatch_acosh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arccosh
static PyObject * THPVariable_arccosh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arccosh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::arccosh(Tensor self) -> Tensor
    
    auto dispatch_arccosh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arccosh();
    };
    return wrap(dispatch_arccosh(_r.tensor(0)));
  } else {
    // aten::arccosh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arccosh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arccosh_out(out, self);
    };
    return wrap(dispatch_arccosh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arccosh_
static PyObject * THPVariable_arccosh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arccosh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::arccosh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_arccosh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.arccosh_();
  };
  return wrap(dispatch_arccosh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// asinh
static PyObject * THPVariable_asinh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "asinh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::asinh(Tensor self) -> Tensor
    
    auto dispatch_asinh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.asinh();
    };
    return wrap(dispatch_asinh(_r.tensor(0)));
  } else {
    // aten::asinh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_asinh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::asinh_out(out, self);
    };
    return wrap(dispatch_asinh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// asinh_
static PyObject * THPVariable_asinh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "asinh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::asinh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_asinh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.asinh_();
  };
  return wrap(dispatch_asinh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arcsinh
static PyObject * THPVariable_arcsinh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arcsinh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::arcsinh(Tensor self) -> Tensor
    
    auto dispatch_arcsinh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arcsinh();
    };
    return wrap(dispatch_arcsinh(_r.tensor(0)));
  } else {
    // aten::arcsinh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arcsinh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arcsinh_out(out, self);
    };
    return wrap(dispatch_arcsinh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arcsinh_
static PyObject * THPVariable_arcsinh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arcsinh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::arcsinh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_arcsinh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.arcsinh_();
  };
  return wrap(dispatch_arcsinh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// atanh
static PyObject * THPVariable_atanh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atanh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::atanh(Tensor self) -> Tensor
    
    auto dispatch_atanh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.atanh();
    };
    return wrap(dispatch_atanh(_r.tensor(0)));
  } else {
    // aten::atanh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_atanh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::atanh_out(out, self);
    };
    return wrap(dispatch_atanh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// atanh_
static PyObject * THPVariable_atanh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atanh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::atanh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_atanh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.atanh_();
  };
  return wrap(dispatch_atanh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arctanh
static PyObject * THPVariable_arctanh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arctanh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::arctanh(Tensor self) -> Tensor
    
    auto dispatch_arctanh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arctanh();
    };
    return wrap(dispatch_arctanh(_r.tensor(0)));
  } else {
    // aten::arctanh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arctanh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arctanh_out(out, self);
    };
    return wrap(dispatch_arctanh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arctanh_
static PyObject * THPVariable_arctanh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arctanh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::arctanh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_arctanh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.arctanh_();
  };
  return wrap(dispatch_arctanh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// as_strided
static PyObject * THPVariable_as_strided(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "as_strided(Tensor input, SymIntArrayRef size, SymIntArrayRef stride, SymInt? storage_offset=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::as_strided(Tensor(a) self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor(a)
  
  auto dispatch_as_strided = [](const at::Tensor & self, c10::SymIntArrayRef size, c10::SymIntArrayRef stride, ::std::optional<c10::SymInt> storage_offset) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.as_strided_symint(size, stride, storage_offset);
  };
  return wrap(dispatch_as_strided(_r.tensor(0), _r.symintlist(1), _r.symintlist(2), _r.toSymIntOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// as_strided_
static PyObject * THPVariable_as_strided_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "as_strided_(Tensor input, SymIntArrayRef size, SymIntArrayRef stride, SymInt? storage_offset=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::as_strided_(Tensor(a!) self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor(a!)
  
  auto dispatch_as_strided_ = [](const at::Tensor & self, c10::SymIntArrayRef size, c10::SymIntArrayRef stride, ::std::optional<c10::SymInt> storage_offset) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.as_strided__symint(size, stride, storage_offset);
  };
  return wrap(dispatch_as_strided_(_r.tensor(0), _r.symintlist(1), _r.symintlist(2), _r.toSymIntOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// asin
static PyObject * THPVariable_asin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "asin(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::asin(Tensor self) -> Tensor
    
    auto dispatch_asin = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.asin();
    };
    return wrap(dispatch_asin(_r.tensor(0)));
  } else {
    // aten::asin.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_asin_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::asin_out(out, self);
    };
    return wrap(dispatch_asin_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// asin_
static PyObject * THPVariable_asin_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "asin_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::asin_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_asin_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.asin_();
  };
  return wrap(dispatch_asin_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arcsin
static PyObject * THPVariable_arcsin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arcsin(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::arcsin(Tensor self) -> Tensor
    
    auto dispatch_arcsin = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arcsin();
    };
    return wrap(dispatch_arcsin(_r.tensor(0)));
  } else {
    // aten::arcsin.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arcsin_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arcsin_out(out, self);
    };
    return wrap(dispatch_arcsin_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arcsin_
static PyObject * THPVariable_arcsin_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arcsin_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::arcsin_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_arcsin_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.arcsin_();
  };
  return wrap(dispatch_arcsin_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// atan
static PyObject * THPVariable_atan(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atan(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::atan(Tensor self) -> Tensor
    
    auto dispatch_atan = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.atan();
    };
    return wrap(dispatch_atan(_r.tensor(0)));
  } else {
    // aten::atan.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_atan_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::atan_out(out, self);
    };
    return wrap(dispatch_atan_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// atan_
static PyObject * THPVariable_atan_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atan_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::atan_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_atan_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.atan_();
  };
  return wrap(dispatch_atan_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arctan
static PyObject * THPVariable_arctan(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arctan(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::arctan(Tensor self) -> Tensor
    
    auto dispatch_arctan = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arctan();
    };
    return wrap(dispatch_arctan(_r.tensor(0)));
  } else {
    // aten::arctan.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arctan_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arctan_out(out, self);
    };
    return wrap(dispatch_arctan_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arctan_
static PyObject * THPVariable_arctan_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arctan_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::arctan_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_arctan_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.arctan_();
  };
  return wrap(dispatch_arctan_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// atleast_1d
static PyObject * THPVariable_atleast_1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atleast_1d(Tensor input)",
    "atleast_1d(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::atleast_1d(Tensor self) -> Tensor
      
      auto dispatch_atleast_1d = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::atleast_1d(self);
      };
      return wrap(dispatch_atleast_1d(_r.tensor(0)));
    }
    case 1: {
      // aten::atleast_1d.Sequence(Tensor[] tensors) -> Tensor[]
      
      auto dispatch_atleast_1d = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::atleast_1d(tensors);
      };
      return wrap(dispatch_atleast_1d(_r.tensorlist(0)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// atleast_2d
static PyObject * THPVariable_atleast_2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atleast_2d(Tensor input)",
    "atleast_2d(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::atleast_2d(Tensor self) -> Tensor
      
      auto dispatch_atleast_2d = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::atleast_2d(self);
      };
      return wrap(dispatch_atleast_2d(_r.tensor(0)));
    }
    case 1: {
      // aten::atleast_2d.Sequence(Tensor[] tensors) -> Tensor[]
      
      auto dispatch_atleast_2d = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::atleast_2d(tensors);
      };
      return wrap(dispatch_atleast_2d(_r.tensorlist(0)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// atleast_3d
static PyObject * THPVariable_atleast_3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atleast_3d(Tensor input)",
    "atleast_3d(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::atleast_3d(Tensor self) -> Tensor
      
      auto dispatch_atleast_3d = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::atleast_3d(self);
      };
      return wrap(dispatch_atleast_3d(_r.tensor(0)));
    }
    case 1: {
      // aten::atleast_3d.Sequence(Tensor[] tensors) -> Tensor[]
      
      auto dispatch_atleast_3d = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::atleast_3d(tensors);
      };
      return wrap(dispatch_atleast_3d(_r.tensorlist(0)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// baddbmm
static PyObject * THPVariable_baddbmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "baddbmm(Scalar beta, Tensor input, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor out=None)|deprecated",
    "baddbmm(Scalar beta, Tensor input, Tensor batch1, Tensor batch2, *, Tensor out=None)|deprecated",
    "baddbmm(Tensor input, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // [deprecated] aten::baddbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_baddbmm = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.baddbmm(batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_baddbmm(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      } else {
        // [deprecated] aten::baddbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_baddbmm_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::baddbmm_out(out, self, batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_baddbmm_out(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // [deprecated] aten::baddbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_baddbmm = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.baddbmm(batch1, batch2, beta, 1);
        };
        return wrap(dispatch_baddbmm(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::baddbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_baddbmm_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::baddbmm_out(out, self, batch1, batch2, beta, 1);
        };
        return wrap(dispatch_baddbmm_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::baddbmm(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor
        
        auto dispatch_baddbmm = [](const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.baddbmm(batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_baddbmm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      } else {
        // aten::baddbmm.out(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_baddbmm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::baddbmm_out(out, self, batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_baddbmm_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bartlett_window
static PyObject * THPVariable_bartlett_window(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bartlett_window(int64_t window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "bartlett_window(int64_t window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::bartlett_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(1))
          .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(2))
          .requires_grad(_r.toBool(5))
          .pinned_memory(_r.toBool(4));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_bartlett_window = [](int64_t window_length, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::bartlett_window(window_length, options);
      };
      return wrap(dispatch_bartlett_window(_r.toInt64(0), options));
    }
    case 1: {
      // aten::bartlett_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_bartlett_window = [](int64_t window_length, bool periodic, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::bartlett_window(window_length, periodic, options);
      };
      return wrap(dispatch_bartlett_window(_r.toInt64(0), _r.toBool(1), options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm
static PyObject * THPVariable_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, double momentum, double eps, bool cudnn_enabled)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> Tensor
  
  auto dispatch_batch_norm = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool training, double momentum, double eps, bool cudnn_enabled) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm(input, weight, bias, running_mean, running_var, training, momentum, eps, cudnn_enabled);
  };
  return wrap(dispatch_batch_norm(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_batch_norm
static PyObject * THPVariable_quantized_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor var, double eps, double output_scale, int64_t output_zero_point)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor var, float eps, float output_scale, int output_zero_point) -> Tensor
  
  auto dispatch_quantized_batch_norm = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const at::Tensor & mean, const at::Tensor & var, double eps, double output_scale, int64_t output_zero_point) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_batch_norm(input, weight, bias, mean, var, eps, output_scale, output_zero_point);
  };
  return wrap(dispatch_quantized_batch_norm(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.tensor(3), _r.tensor(4), _r.toDouble(5), _r.toDouble(6), _r.toInt64(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _batch_norm_impl_index
static PyObject * THPVariable__batch_norm_impl_index(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_batch_norm_impl_index(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, double momentum, double eps, bool cudnn_enabled)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_batch_norm_impl_index(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> (Tensor, Tensor, Tensor, Tensor, int)
  
  auto dispatch__batch_norm_impl_index = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool training, double momentum, double eps, bool cudnn_enabled) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t> {
    pybind11::gil_scoped_release no_gil;
    return at::_batch_norm_impl_index(input, weight, bias, running_mean, running_var, training, momentum, eps, cudnn_enabled);
  };
  return wrap(dispatch__batch_norm_impl_index(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bernoulli
static PyObject * THPVariable_bernoulli(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bernoulli(Tensor input, *, Generator? generator=None, Tensor out=None)",
    "bernoulli(Tensor input, double p, *, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::bernoulli(Tensor self, *, Generator? generator=None) -> Tensor
        
        auto dispatch_bernoulli = [](const at::Tensor & self, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bernoulli(generator);
        };
        return wrap(dispatch_bernoulli(_r.tensor(0), _r.generator(1)));
      } else {
        // aten::bernoulli.out(Tensor self, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bernoulli_out = [](at::Tensor out, const at::Tensor & self, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bernoulli_out(out, self, generator);
        };
        return wrap(dispatch_bernoulli_out(_r.tensor(2), _r.tensor(0), _r.generator(1)));
      }
    }
    case 1: {
      // aten::bernoulli.p(Tensor self, float p, *, Generator? generator=None) -> Tensor
      
      auto dispatch_bernoulli = [](const at::Tensor & self, double p, ::std::optional<at::Generator> generator) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.bernoulli(p, generator);
      };
      return wrap(dispatch_bernoulli(_r.tensor(0), _r.toDouble(1), _r.generator(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// bilinear
static PyObject * THPVariable_bilinear(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bilinear(Tensor input1, Tensor input2, Tensor weight, Tensor? bias=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::bilinear(Tensor input1, Tensor input2, Tensor weight, Tensor? bias=None) -> Tensor
  
  auto dispatch_bilinear = [](const at::Tensor & input1, const at::Tensor & input2, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::bilinear(input1, input2, weight, bias);
  };
  return wrap(dispatch_bilinear(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// binary_cross_entropy_with_logits
static PyObject * THPVariable_binary_cross_entropy_with_logits(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "binary_cross_entropy_with_logits(Tensor input, Tensor target, Tensor? weight=None, Tensor? pos_weight=None, int64_t reduction=at::Reduction::Mean)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::binary_cross_entropy_with_logits(Tensor self, Tensor target, Tensor? weight=None, Tensor? pos_weight=None, int reduction=Mean) -> Tensor
  
  auto dispatch_binary_cross_entropy_with_logits = [](const at::Tensor & self, const at::Tensor & target, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & pos_weight, int64_t reduction) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::binary_cross_entropy_with_logits(self, target, weight, pos_weight, reduction);
  };
  return wrap(dispatch_binary_cross_entropy_with_logits(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// bincount
static PyObject * THPVariable_bincount(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bincount(Tensor input, Tensor? weights=None, int64_t minlength=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::bincount(Tensor self, Tensor? weights=None, int minlength=0) -> Tensor
  
  auto dispatch_bincount = [](const at::Tensor & self, const ::std::optional<at::Tensor> & weights, int64_t minlength) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.bincount(weights, minlength);
  };
  return wrap(dispatch_bincount(_r.tensor(0), _r.optionalTensor(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// bitwise_not
static PyObject * THPVariable_bitwise_not(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bitwise_not(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::bitwise_not(Tensor self) -> Tensor
    
    auto dispatch_bitwise_not = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.bitwise_not();
    };
    return wrap(dispatch_bitwise_not(_r.tensor(0)));
  } else {
    // aten::bitwise_not.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_bitwise_not_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::bitwise_not_out(out, self);
    };
    return wrap(dispatch_bitwise_not_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// copysign
static PyObject * THPVariable_copysign(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "copysign(Tensor input, Tensor other, *, Tensor out=None)",
    "copysign(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::copysign.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_copysign = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.copysign(other);
        };
        return wrap(dispatch_copysign(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::copysign.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_copysign_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::copysign_out(out, self, other);
        };
        return wrap(dispatch_copysign_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::copysign.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_copysign = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.copysign(other);
        };
        return wrap(dispatch_copysign(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::copysign.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_copysign_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::copysign_out(out, self, other);
        };
        return wrap(dispatch_copysign_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _lazy_clone
static PyObject * THPVariable__lazy_clone(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_lazy_clone(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_lazy_clone(Tensor self) -> Tensor
  
  auto dispatch__lazy_clone = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self._lazy_clone();
  };
  return wrap(dispatch__lazy_clone(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logical_not
static PyObject * THPVariable_logical_not(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logical_not(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::logical_not(Tensor self) -> Tensor
    
    auto dispatch_logical_not = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logical_not();
    };
    return wrap(dispatch_logical_not(_r.tensor(0)));
  } else {
    // aten::logical_not.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logical_not_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logical_not_out(out, self);
    };
    return wrap(dispatch_logical_not_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logical_xor
static PyObject * THPVariable_logical_xor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logical_xor(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::logical_xor(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_logical_xor = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logical_xor(other);
    };
    return wrap(dispatch_logical_xor(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::logical_xor.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logical_xor_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logical_xor_out(out, self, other);
    };
    return wrap(dispatch_logical_xor_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logical_and
static PyObject * THPVariable_logical_and(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logical_and(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::logical_and(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_logical_and = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logical_and(other);
    };
    return wrap(dispatch_logical_and(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::logical_and.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logical_and_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logical_and_out(out, self, other);
    };
    return wrap(dispatch_logical_and_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logical_or
static PyObject * THPVariable_logical_or(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logical_or(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::logical_or(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_logical_or = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logical_or(other);
    };
    return wrap(dispatch_logical_or(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::logical_or.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logical_or_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logical_or_out(out, self, other);
    };
    return wrap(dispatch_logical_or_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// blackman_window
static PyObject * THPVariable_blackman_window(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "blackman_window(int64_t window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "blackman_window(int64_t window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::blackman_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(1))
          .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(2))
          .requires_grad(_r.toBool(5))
          .pinned_memory(_r.toBool(4));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_blackman_window = [](int64_t window_length, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::blackman_window(window_length, options);
      };
      return wrap(dispatch_blackman_window(_r.toInt64(0), options));
    }
    case 1: {
      // aten::blackman_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_blackman_window = [](int64_t window_length, bool periodic, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::blackman_window(window_length, periodic, options);
      };
      return wrap(dispatch_blackman_window(_r.toInt64(0), _r.toBool(1), options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// bmm
static PyObject * THPVariable_bmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bmm(Tensor input, Tensor mat2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::bmm(Tensor self, Tensor mat2) -> Tensor
    
    auto dispatch_bmm = [](const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.bmm(mat2);
    };
    return wrap(dispatch_bmm(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::bmm.out(Tensor self, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_bmm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::bmm_out(out, self, mat2);
    };
    return wrap(dispatch_bmm_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// broadcast_tensors
static PyObject * THPVariable_broadcast_tensors(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "broadcast_tensors(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::broadcast_tensors(Tensor[] tensors) -> Tensor[]
  
  auto dispatch_broadcast_tensors = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::broadcast_tensors(tensors);
  };
  return wrap(dispatch_broadcast_tensors(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// broadcast_to
static PyObject * THPVariable_broadcast_to(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "broadcast_to(Tensor input, SymIntArrayRef size)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::broadcast_to(Tensor(a) self, SymInt[] size) -> Tensor(a)
  
  auto dispatch_broadcast_to = [](const at::Tensor & self, c10::SymIntArrayRef size) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.broadcast_to_symint(size);
  };
  return wrap(dispatch_broadcast_to(_r.tensor(0), _r.symintlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_broadcast_to
static PyObject * THPVariable__sparse_broadcast_to(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_broadcast_to(Tensor input, IntArrayRef size)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_broadcast_to(Tensor(a) self, int[] size) -> Tensor(a)
  
  auto dispatch__sparse_broadcast_to = [](const at::Tensor & self, at::IntArrayRef size) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_broadcast_to(self, size);
  };
  return wrap(dispatch__sparse_broadcast_to(_r.tensor(0), _r.intlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// cat
static PyObject * THPVariable_cat(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cat(TensorList tensors, int64_t dim=0, *, Tensor out=None)",
    "cat(TensorList tensors, Dimname dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::cat(Tensor[] tensors, int dim=0) -> Tensor
        
        auto dispatch_cat = [](const at::ITensorListRef & tensors, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cat(tensors, dim);
        };
        return wrap(dispatch_cat(_r.tensorlist(0), _r.toInt64(1)));
      } else {
        // aten::cat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_cat_out = [](at::Tensor out, const at::ITensorListRef & tensors, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cat_out(out, tensors, dim);
        };
        return wrap(dispatch_cat_out(_r.tensor(2), _r.tensorlist(0), _r.toInt64(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::cat.names(Tensor[] tensors, Dimname dim) -> Tensor
        
        auto dispatch_cat = [](at::TensorList tensors, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cat(tensors, dim);
        };
        return wrap(dispatch_cat(_r.tensorlist(0), _r.dimname(1)));
      } else {
        // aten::cat.names_out(Tensor[] tensors, Dimname dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_cat_out = [](at::Tensor out, at::TensorList tensors, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cat_out(out, tensors, dim);
        };
        return wrap(dispatch_cat_out(_r.tensor(2), _r.tensorlist(0), _r.dimname(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// concat
static PyObject * THPVariable_concat(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "concat(TensorList tensors, int64_t dim=0, *, Tensor out=None)",
    "concat(TensorList tensors, Dimname dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::concat(Tensor[] tensors, int dim=0) -> Tensor
        
        auto dispatch_concat = [](at::TensorList tensors, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concat(tensors, dim);
        };
        return wrap(dispatch_concat(_r.tensorlist(0), _r.toInt64(1)));
      } else {
        // aten::concat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_concat_out = [](at::Tensor out, at::TensorList tensors, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concat_out(out, tensors, dim);
        };
        return wrap(dispatch_concat_out(_r.tensor(2), _r.tensorlist(0), _r.toInt64(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::concat.names(Tensor[] tensors, Dimname dim) -> Tensor
        
        auto dispatch_concat = [](at::TensorList tensors, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concat(tensors, dim);
        };
        return wrap(dispatch_concat(_r.tensorlist(0), _r.dimname(1)));
      } else {
        // aten::concat.names_out(Tensor[] tensors, Dimname dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_concat_out = [](at::Tensor out, at::TensorList tensors, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concat_out(out, tensors, dim);
        };
        return wrap(dispatch_concat_out(_r.tensor(2), _r.tensorlist(0), _r.dimname(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// concatenate
static PyObject * THPVariable_concatenate(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "concatenate(TensorList tensors, int64_t dim=0, *, Tensor out=None)",
    "concatenate(TensorList tensors, Dimname dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::concatenate(Tensor[] tensors, int dim=0) -> Tensor
        
        auto dispatch_concatenate = [](at::TensorList tensors, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concatenate(tensors, dim);
        };
        return wrap(dispatch_concatenate(_r.tensorlist(0), _r.toInt64(1)));
      } else {
        // aten::concatenate.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_concatenate_out = [](at::Tensor out, at::TensorList tensors, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concatenate_out(out, tensors, dim);
        };
        return wrap(dispatch_concatenate_out(_r.tensor(2), _r.tensorlist(0), _r.toInt64(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::concatenate.names(Tensor[] tensors, Dimname dim) -> Tensor
        
        auto dispatch_concatenate = [](at::TensorList tensors, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concatenate(tensors, dim);
        };
        return wrap(dispatch_concatenate(_r.tensorlist(0), _r.dimname(1)));
      } else {
        // aten::concatenate.names_out(Tensor[] tensors, Dimname dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_concatenate_out = [](at::Tensor out, at::TensorList tensors, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::concatenate_out(out, tensors, dim);
        };
        return wrap(dispatch_concatenate_out(_r.tensor(2), _r.tensorlist(0), _r.dimname(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// block_diag
static PyObject * THPVariable_block_diag(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "block_diag(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::block_diag(Tensor[] tensors) -> Tensor
  
  auto dispatch_block_diag = [](at::TensorList tensors) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::block_diag(tensors);
  };
  return wrap(dispatch_block_diag(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ceil
static PyObject * THPVariable_ceil(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ceil(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::ceil(Tensor self) -> Tensor
    
    auto dispatch_ceil = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.ceil();
    };
    return wrap(dispatch_ceil(_r.tensor(0)));
  } else {
    // aten::ceil.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_ceil_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::ceil_out(out, self);
    };
    return wrap(dispatch_ceil_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ceil_
static PyObject * THPVariable_ceil_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ceil_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::ceil_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_ceil_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.ceil_();
  };
  return wrap(dispatch_ceil_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// chain_matmul
static PyObject * THPVariable_chain_matmul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "chain_matmul(TensorList matrices, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::chain_matmul(Tensor[] matrices) -> Tensor
    
    auto dispatch_chain_matmul = [](at::TensorList matrices) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::chain_matmul(matrices);
    };
    return wrap(dispatch_chain_matmul(_r.tensorlist(0)));
  } else {
    // aten::chain_matmul.out(Tensor[] matrices, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_chain_matmul_out = [](at::Tensor out, at::TensorList matrices) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::chain_matmul_out(out, matrices);
    };
    return wrap(dispatch_chain_matmul_out(_r.tensor(1), _r.tensorlist(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unsafe_chunk
static PyObject * THPVariable_unsafe_chunk(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unsafe_chunk(Tensor input, int64_t chunks, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::unsafe_chunk(Tensor self, int chunks, int dim=0) -> Tensor[]
  
  auto dispatch_unsafe_chunk = [](const at::Tensor & self, int64_t chunks, int64_t dim) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return self.unsafe_chunk(chunks, dim);
  };
  return wrap(dispatch_unsafe_chunk(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// chunk
static PyObject * THPVariable_chunk(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "chunk(Tensor input, int64_t chunks, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::chunk(Tensor(a -> *) self, int chunks, int dim=0) -> Tensor(a)[]
  
  auto dispatch_chunk = [](const at::Tensor & self, int64_t chunks, int64_t dim) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return self.chunk(chunks, dim);
  };
  return wrap(dispatch_chunk(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// tensor_split
static PyObject * THPVariable_tensor_split(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tensor_split(Tensor input, SymIntArrayRef indices, int64_t dim=0)",
    "tensor_split(Tensor input, Tensor tensor_indices_or_sections, int64_t dim=0)",
    "tensor_split(Tensor input, SymInt sections, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::tensor_split.indices(Tensor(a -> *) self, SymInt[] indices, int dim=0) -> Tensor(a)[]
      
      auto dispatch_tensor_split = [](const at::Tensor & self, c10::SymIntArrayRef indices, int64_t dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.tensor_split_symint(indices, dim);
      };
      return wrap(dispatch_tensor_split(_r.tensor(0), _r.symintlist(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::tensor_split.tensor_indices_or_sections(Tensor(a -> *) self, Tensor tensor_indices_or_sections, int dim=0) -> Tensor(a)[]
      
      auto dispatch_tensor_split = [](const at::Tensor & self, const at::Tensor & tensor_indices_or_sections, int64_t dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.tensor_split(tensor_indices_or_sections, dim);
      };
      return wrap(dispatch_tensor_split(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
    }
    case 2: {
      // aten::tensor_split.sections(Tensor(a -> *) self, SymInt sections, int dim=0) -> Tensor(a)[]
      
      auto dispatch_tensor_split = [](const at::Tensor & self, c10::SymInt sections, int64_t dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.tensor_split_symint(sections, dim);
      };
      return wrap(dispatch_tensor_split(_r.tensor(0), _r.toSymInt(1), _r.toInt64(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clamp
static PyObject * THPVariable_clamp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clamp(Tensor input, Tensor? min=None, Tensor? max=None, *, Tensor out=None)",
    "clamp(Tensor input, Scalar? min=None, Scalar? max=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::clamp.Tensor(Tensor self, Tensor? min=None, Tensor? max=None) -> Tensor
        
        auto dispatch_clamp = [](const at::Tensor & self, const ::std::optional<at::Tensor> & min, const ::std::optional<at::Tensor> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clamp(min, max);
        };
        return wrap(dispatch_clamp(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2)));
      } else {
        // aten::clamp.Tensor_out(Tensor self, Tensor? min=None, Tensor? max=None, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clamp_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Tensor> & min, const ::std::optional<at::Tensor> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clamp_out(out, self, min, max);
        };
        return wrap(dispatch_clamp_out(_r.tensor(3), _r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::clamp(Tensor self, Scalar? min=None, Scalar? max=None) -> Tensor
        
        auto dispatch_clamp = [](const at::Tensor & self, const ::std::optional<at::Scalar> & min, const ::std::optional<at::Scalar> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clamp(min, max);
        };
        return wrap(dispatch_clamp(_r.tensor(0), _r.scalarOptional(1), _r.scalarOptional(2)));
      } else {
        // aten::clamp.out(Tensor self, Scalar? min=None, Scalar? max=None, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clamp_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Scalar> & min, const ::std::optional<at::Scalar> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clamp_out(out, self, min, max);
        };
        return wrap(dispatch_clamp_out(_r.tensor(3), _r.tensor(0), _r.scalarOptional(1), _r.scalarOptional(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clamp_
static PyObject * THPVariable_clamp_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clamp_(Tensor input, Tensor? min=None, Tensor? max=None)",
    "clamp_(Tensor input, Scalar? min=None, Scalar? max=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::clamp_.Tensor(Tensor(a!) self, Tensor? min=None, Tensor? max=None) -> Tensor(a!)
      
      auto dispatch_clamp_ = [](at::Tensor self, const ::std::optional<at::Tensor> & min, const ::std::optional<at::Tensor> & max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clamp_(min, max);
      };
      return wrap(dispatch_clamp_(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2)));
    }
    case 1: {
      // aten::clamp_(Tensor(a!) self, Scalar? min=None, Scalar? max=None) -> Tensor(a!)
      
      auto dispatch_clamp_ = [](at::Tensor self, const ::std::optional<at::Scalar> & min, const ::std::optional<at::Scalar> & max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clamp_(min, max);
      };
      return wrap(dispatch_clamp_(_r.tensor(0), _r.scalarOptional(1), _r.scalarOptional(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clamp_max
static PyObject * THPVariable_clamp_max(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clamp_max(Tensor input, Tensor max, *, Tensor out=None)",
    "clamp_max(Tensor input, Scalar max, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::clamp_max.Tensor(Tensor self, Tensor max) -> Tensor
        
        auto dispatch_clamp_max = [](const at::Tensor & self, const at::Tensor & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clamp_max(max);
        };
        return wrap(dispatch_clamp_max(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::clamp_max.Tensor_out(Tensor self, Tensor max, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clamp_max_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clamp_max_out(out, self, max);
        };
        return wrap(dispatch_clamp_max_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::clamp_max(Tensor self, Scalar max) -> Tensor
        
        auto dispatch_clamp_max = [](const at::Tensor & self, const at::Scalar & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clamp_max(max);
        };
        return wrap(dispatch_clamp_max(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::clamp_max.out(Tensor self, Scalar max, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clamp_max_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clamp_max_out(out, self, max);
        };
        return wrap(dispatch_clamp_max_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clamp_max_
static PyObject * THPVariable_clamp_max_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clamp_max_(Tensor input, Tensor max)",
    "clamp_max_(Tensor input, Scalar max)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::clamp_max_.Tensor(Tensor(a!) self, Tensor max) -> Tensor(a!)
      
      auto dispatch_clamp_max_ = [](at::Tensor self, const at::Tensor & max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clamp_max_(max);
      };
      return wrap(dispatch_clamp_max_(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::clamp_max_(Tensor(a!) self, Scalar max) -> Tensor(a!)
      
      auto dispatch_clamp_max_ = [](at::Tensor self, const at::Scalar & max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clamp_max_(max);
      };
      return wrap(dispatch_clamp_max_(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clamp_min
static PyObject * THPVariable_clamp_min(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clamp_min(Tensor input, Tensor min, *, Tensor out=None)",
    "clamp_min(Tensor input, Scalar min, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::clamp_min.Tensor(Tensor self, Tensor min) -> Tensor
        
        auto dispatch_clamp_min = [](const at::Tensor & self, const at::Tensor & min) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clamp_min(min);
        };
        return wrap(dispatch_clamp_min(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::clamp_min.Tensor_out(Tensor self, Tensor min, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clamp_min_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & min) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clamp_min_out(out, self, min);
        };
        return wrap(dispatch_clamp_min_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::clamp_min(Tensor self, Scalar min) -> Tensor
        
        auto dispatch_clamp_min = [](const at::Tensor & self, const at::Scalar & min) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clamp_min(min);
        };
        return wrap(dispatch_clamp_min(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::clamp_min.out(Tensor self, Scalar min, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clamp_min_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & min) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clamp_min_out(out, self, min);
        };
        return wrap(dispatch_clamp_min_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clamp_min_
static PyObject * THPVariable_clamp_min_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clamp_min_(Tensor input, Tensor min)",
    "clamp_min_(Tensor input, Scalar min)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::clamp_min_.Tensor(Tensor(a!) self, Tensor min) -> Tensor(a!)
      
      auto dispatch_clamp_min_ = [](at::Tensor self, const at::Tensor & min) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clamp_min_(min);
      };
      return wrap(dispatch_clamp_min_(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::clamp_min_(Tensor(a!) self, Scalar min) -> Tensor(a!)
      
      auto dispatch_clamp_min_ = [](at::Tensor self, const at::Scalar & min) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clamp_min_(min);
      };
      return wrap(dispatch_clamp_min_(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clip
static PyObject * THPVariable_clip(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clip(Tensor input, Tensor? min=None, Tensor? max=None, *, Tensor out=None)",
    "clip(Tensor input, Scalar? min=None, Scalar? max=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::clip.Tensor(Tensor self, Tensor? min=None, Tensor? max=None) -> Tensor
        
        auto dispatch_clip = [](const at::Tensor & self, const ::std::optional<at::Tensor> & min, const ::std::optional<at::Tensor> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clip(min, max);
        };
        return wrap(dispatch_clip(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2)));
      } else {
        // aten::clip.Tensor_out(Tensor self, Tensor? min=None, Tensor? max=None, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clip_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Tensor> & min, const ::std::optional<at::Tensor> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clip_out(out, self, min, max);
        };
        return wrap(dispatch_clip_out(_r.tensor(3), _r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::clip(Tensor self, Scalar? min=None, Scalar? max=None) -> Tensor
        
        auto dispatch_clip = [](const at::Tensor & self, const ::std::optional<at::Scalar> & min, const ::std::optional<at::Scalar> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.clip(min, max);
        };
        return wrap(dispatch_clip(_r.tensor(0), _r.scalarOptional(1), _r.scalarOptional(2)));
      } else {
        // aten::clip.out(Tensor self, Scalar? min=None, Scalar? max=None, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_clip_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Scalar> & min, const ::std::optional<at::Scalar> & max) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::clip_out(out, self, min, max);
        };
        return wrap(dispatch_clip_out(_r.tensor(3), _r.tensor(0), _r.scalarOptional(1), _r.scalarOptional(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// clip_
static PyObject * THPVariable_clip_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clip_(Tensor input, Tensor? min=None, Tensor? max=None)",
    "clip_(Tensor input, Scalar? min=None, Scalar? max=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::clip_.Tensor(Tensor(a!) self, Tensor? min=None, Tensor? max=None) -> Tensor(a!)
      
      auto dispatch_clip_ = [](at::Tensor self, const ::std::optional<at::Tensor> & min, const ::std::optional<at::Tensor> & max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clip_(min, max);
      };
      return wrap(dispatch_clip_(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2)));
    }
    case 1: {
      // aten::clip_(Tensor(a!) self, Scalar? min=None, Scalar? max=None) -> Tensor(a!)
      
      auto dispatch_clip_ = [](at::Tensor self, const ::std::optional<at::Scalar> & min, const ::std::optional<at::Scalar> & max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.clip_(min, max);
      };
      return wrap(dispatch_clip_(_r.tensor(0), _r.scalarOptional(1), _r.scalarOptional(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_is_acceptable
static PyObject * THPVariable_cudnn_is_acceptable(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_is_acceptable(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_is_acceptable(Tensor self) -> bool
  
  auto dispatch_cudnn_is_acceptable = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_is_acceptable(self);
  };
  return wrap(dispatch_cudnn_is_acceptable(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// complex
static PyObject * THPVariable_complex(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "complex(Tensor real, Tensor imag, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::complex(Tensor real, Tensor imag) -> Tensor
    
    auto dispatch_complex = [](const at::Tensor & real, const at::Tensor & imag) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::complex(real, imag);
    };
    return wrap(dispatch_complex(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::complex.out(Tensor real, Tensor imag, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_complex_out = [](at::Tensor out, const at::Tensor & real, const at::Tensor & imag) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::complex_out(out, real, imag);
    };
    return wrap(dispatch_complex_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// polar
static PyObject * THPVariable_polar(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "polar(Tensor abs, Tensor angle, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::polar(Tensor abs, Tensor angle) -> Tensor
    
    auto dispatch_polar = [](const at::Tensor & abs, const at::Tensor & angle) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::polar(abs, angle);
    };
    return wrap(dispatch_polar(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::polar.out(Tensor abs, Tensor angle, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_polar_out = [](at::Tensor out, const at::Tensor & abs, const at::Tensor & angle) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::polar_out(out, abs, angle);
    };
    return wrap(dispatch_polar_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// constant_pad_nd
static PyObject * THPVariable_constant_pad_nd(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "constant_pad_nd(Tensor input, SymIntArrayRef pad, Scalar value=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::constant_pad_nd(Tensor self, SymInt[] pad, Scalar value=0) -> Tensor
  
  auto dispatch_constant_pad_nd = [](const at::Tensor & self, c10::SymIntArrayRef pad, const at::Scalar & value) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::constant_pad_nd_symint(self, pad, value);
  };
  return wrap(dispatch_constant_pad_nd(_r.tensor(0), _r.symintlist(1), _r.scalar(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// convolution
static PyObject * THPVariable_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, bool transposed, SymIntArrayRef output_padding, SymInt groups)",
  }, /*traceable=*/false);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups) -> Tensor
  
  auto dispatch_convolution = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, bool transposed, c10::SymIntArrayRef output_padding, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::convolution_symint(input, weight, bias, stride, padding, dilation, transposed, output_padding, groups);
  };
  return wrap(dispatch_convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toBool(6), _r.symintlist(7), _r.toSymInt(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _convolution
static PyObject * THPVariable__convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, bool transposed, IntArrayRef output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled)",
    "_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, bool transposed, SymIntArrayRef output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32)",
  }, /*traceable=*/true);

  ParsedArgs<13> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_convolution.deprecated(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, int[] output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled) -> Tensor
      
      auto dispatch__convolution = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, bool transposed, at::IntArrayRef output_padding, c10::SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_convolution_symint(input, weight, bias, stride, padding, dilation, transposed, output_padding, groups, benchmark, deterministic, cudnn_enabled);
      };
      return wrap(dispatch__convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toBool(6), _r.intlist(7), _r.toSymInt(8), _r.toBool(9), _r.toBool(10), _r.toBool(11)));
    }
    case 1: {
      // aten::_convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensor
      
      auto dispatch__convolution = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, bool transposed, c10::SymIntArrayRef output_padding, c10::SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_convolution_symint(input, weight, bias, stride, padding, dilation, transposed, output_padding, groups, benchmark, deterministic, cudnn_enabled, allow_tf32);
      };
      return wrap(dispatch__convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toBool(6), _r.symintlist(7), _r.toSymInt(8), _r.toBool(9), _r.toBool(10), _r.toBool(11), _r.toBool(12)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _convolution_mode
static PyObject * THPVariable__convolution_mode(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_convolution_mode(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef stride, c10::string_view padding, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_convolution_mode(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, str padding, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch__convolution_mode = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::string_view padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_convolution_mode_symint(input, weight, bias, stride, padding, dilation, groups);
  };
  return wrap(dispatch__convolution_mode(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.stringView(4), _r.symintlist(5), _r.toSymInt(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// conv1d
static PyObject * THPVariable_conv1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv1d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[1] stride=1, SymIntArrayRef[1] padding=0, SymIntArrayRef[1] dilation=1, SymInt groups=1)",
    "conv1d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[1] stride=1, c10::string_view padding=\"valid\", SymIntArrayRef[1] dilation=1, SymInt groups=1)",
  }, /*traceable=*/false);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::conv1d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[1] stride=1, SymInt[1] padding=0, SymInt[1] dilation=1, SymInt groups=1) -> Tensor
      
      auto dispatch_conv1d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::conv1d_symint(input, weight, bias, stride, padding, dilation, groups);
      };
      return wrap(dispatch_conv1d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
    }
    case 1: {
      // aten::conv1d.padding(Tensor input, Tensor weight, Tensor? bias=None, SymInt[1] stride=1, str padding="valid", SymInt[1] dilation=1, SymInt groups=1) -> Tensor
      
      auto dispatch_conv1d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::string_view padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::conv1d_symint(input, weight, bias, stride, padding, dilation, groups);
      };
      return wrap(dispatch_conv1d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.stringView(4), _r.symintlist(5), _r.toSymInt(6)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// conv2d
static PyObject * THPVariable_conv2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv2d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[2] stride=1, SymIntArrayRef[2] padding=0, SymIntArrayRef[2] dilation=1, SymInt groups=1)",
    "conv2d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[2] stride=1, c10::string_view padding=\"valid\", SymIntArrayRef[2] dilation=1, SymInt groups=1)",
  }, /*traceable=*/false);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::conv2d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] dilation=1, SymInt groups=1) -> Tensor
      
      auto dispatch_conv2d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::conv2d_symint(input, weight, bias, stride, padding, dilation, groups);
      };
      return wrap(dispatch_conv2d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
    }
    case 1: {
      // aten::conv2d.padding(Tensor input, Tensor weight, Tensor? bias=None, SymInt[2] stride=1, str padding="valid", SymInt[2] dilation=1, SymInt groups=1) -> Tensor
      
      auto dispatch_conv2d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::string_view padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::conv2d_symint(input, weight, bias, stride, padding, dilation, groups);
      };
      return wrap(dispatch_conv2d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.stringView(4), _r.symintlist(5), _r.toSymInt(6)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// conv3d
static PyObject * THPVariable_conv3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv3d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[3] stride=1, SymIntArrayRef[3] padding=0, SymIntArrayRef[3] dilation=1, SymInt groups=1)",
    "conv3d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[3] stride=1, c10::string_view padding=\"valid\", SymIntArrayRef[3] dilation=1, SymInt groups=1)",
  }, /*traceable=*/false);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::conv3d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] dilation=1, SymInt groups=1) -> Tensor
      
      auto dispatch_conv3d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::conv3d_symint(input, weight, bias, stride, padding, dilation, groups);
      };
      return wrap(dispatch_conv3d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
    }
    case 1: {
      // aten::conv3d.padding(Tensor input, Tensor weight, Tensor? bias=None, SymInt[3] stride=1, str padding="valid", SymInt[3] dilation=1, SymInt groups=1) -> Tensor
      
      auto dispatch_conv3d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::string_view padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::conv3d_symint(input, weight, bias, stride, padding, dilation, groups);
      };
      return wrap(dispatch_conv3d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.stringView(4), _r.symintlist(5), _r.toSymInt(6)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conv_tbc
static PyObject * THPVariable_conv_tbc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv_tbc(Tensor input, Tensor weight, Tensor bias, int64_t pad=0)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::conv_tbc(Tensor self, Tensor weight, Tensor bias, int pad=0) -> Tensor
  
  auto dispatch_conv_tbc = [](const at::Tensor & self, const at::Tensor & weight, const at::Tensor & bias, int64_t pad) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::conv_tbc(self, weight, bias, pad);
  };
  return wrap(dispatch_conv_tbc(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conv_transpose1d
static PyObject * THPVariable_conv_transpose1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv_transpose1d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[1] stride=1, SymIntArrayRef[1] padding=0, SymIntArrayRef[1] output_padding=0, SymInt groups=1, SymIntArrayRef[1] dilation=1)",
  }, /*traceable=*/false);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::conv_transpose1d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[1] stride=1, SymInt[1] padding=0, SymInt[1] output_padding=0, SymInt groups=1, SymInt[1] dilation=1) -> Tensor
  
  auto dispatch_conv_transpose1d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef output_padding, c10::SymInt groups, c10::SymIntArrayRef dilation) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::conv_transpose1d_symint(input, weight, bias, stride, padding, output_padding, groups, dilation);
  };
  return wrap(dispatch_conv_transpose1d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6), _r.symintlist(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conv_transpose2d
static PyObject * THPVariable_conv_transpose2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv_transpose2d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[2] stride=1, SymIntArrayRef[2] padding=0, SymIntArrayRef[2] output_padding=0, SymInt groups=1, SymIntArrayRef[2] dilation=1)",
  }, /*traceable=*/false);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] output_padding=0, SymInt groups=1, SymInt[2] dilation=1) -> Tensor
  
  auto dispatch_conv_transpose2d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef output_padding, c10::SymInt groups, c10::SymIntArrayRef dilation) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::conv_transpose2d_symint(input, weight, bias, stride, padding, output_padding, groups, dilation);
  };
  return wrap(dispatch_conv_transpose2d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6), _r.symintlist(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// conv_transpose3d
static PyObject * THPVariable_conv_transpose3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "conv_transpose3d(Tensor input, Tensor weight, Tensor? bias=None, SymIntArrayRef[3] stride=1, SymIntArrayRef[3] padding=0, SymIntArrayRef[3] output_padding=0, SymInt groups=1, SymIntArrayRef[3] dilation=1)",
  }, /*traceable=*/false);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::conv_transpose3d.input(Tensor input, Tensor weight, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] output_padding=0, SymInt groups=1, SymInt[3] dilation=1) -> Tensor
  
  auto dispatch_conv_transpose3d = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef output_padding, c10::SymInt groups, c10::SymIntArrayRef dilation) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::conv_transpose3d_symint(input, weight, bias, stride, padding, output_padding, groups, dilation);
  };
  return wrap(dispatch_conv_transpose3d(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6), _r.symintlist(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _copy_from
static PyObject * THPVariable__copy_from(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_copy_from(Tensor input, Tensor dst, bool non_blocking=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_copy_from(Tensor self, Tensor dst, bool non_blocking=False) -> Tensor
  
  auto dispatch__copy_from = [](const at::Tensor & self, const at::Tensor & dst, bool non_blocking) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_copy_from(self, dst, non_blocking);
  };
  return wrap(dispatch__copy_from(_r.tensor(0), _r.tensor(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _copy_from_and_resize
static PyObject * THPVariable__copy_from_and_resize(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_copy_from_and_resize(Tensor input, Tensor dst)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_copy_from_and_resize(Tensor self, Tensor dst) -> Tensor
  
  auto dispatch__copy_from_and_resize = [](const at::Tensor & self, const at::Tensor & dst) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_copy_from_and_resize(self, dst);
  };
  return wrap(dispatch__copy_from_and_resize(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cos
static PyObject * THPVariable_cos(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cos(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::cos(Tensor self) -> Tensor
    
    auto dispatch_cos = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.cos();
    };
    return wrap(dispatch_cos(_r.tensor(0)));
  } else {
    // aten::cos.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cos_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cos_out(out, self);
    };
    return wrap(dispatch_cos_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cos_
static PyObject * THPVariable_cos_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cos_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cos_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_cos_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.cos_();
  };
  return wrap(dispatch_cos_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cosh
static PyObject * THPVariable_cosh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cosh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::cosh(Tensor self) -> Tensor
    
    auto dispatch_cosh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.cosh();
    };
    return wrap(dispatch_cosh(_r.tensor(0)));
  } else {
    // aten::cosh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cosh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cosh_out(out, self);
    };
    return wrap(dispatch_cosh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cosh_
static PyObject * THPVariable_cosh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cosh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cosh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_cosh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.cosh_();
  };
  return wrap(dispatch_cosh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cosine_embedding_loss
static PyObject * THPVariable_cosine_embedding_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cosine_embedding_loss(Tensor input1, Tensor input2, Tensor target, double margin=0.0, int64_t reduction=at::Reduction::Mean)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cosine_embedding_loss(Tensor input1, Tensor input2, Tensor target, float margin=0.0, int reduction=Mean) -> Tensor
  
  auto dispatch_cosine_embedding_loss = [](const at::Tensor & input1, const at::Tensor & input2, const at::Tensor & target, double margin, int64_t reduction) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cosine_embedding_loss(input1, input2, target, margin, reduction);
  };
  return wrap(dispatch_cosine_embedding_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// count_nonzero
static PyObject * THPVariable_count_nonzero(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "count_nonzero(Tensor input, int64_t? dim=None)",
    "count_nonzero(Tensor input, IntArrayRef dim)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::count_nonzero(Tensor self, int? dim=None) -> Tensor
      
      auto dispatch_count_nonzero = [](const at::Tensor & self, ::std::optional<int64_t> dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.count_nonzero(dim);
      };
      return wrap(dispatch_count_nonzero(_r.tensor(0), _r.toInt64Optional(1)));
    }
    case 1: {
      // aten::count_nonzero.dim_IntList(Tensor self, int[] dim) -> Tensor
      
      auto dispatch_count_nonzero = [](const at::Tensor & self, at::IntArrayRef dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.count_nonzero(dim);
      };
      return wrap(dispatch_count_nonzero(_r.tensor(0), _r.intlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cov
static PyObject * THPVariable_cov(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cov(Tensor input, *, int64_t correction=1, Tensor? fweights=None, Tensor? aweights=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cov(Tensor self, *, int correction=1, Tensor? fweights=None, Tensor? aweights=None) -> Tensor
  
  auto dispatch_cov = [](const at::Tensor & self, int64_t correction, const ::std::optional<at::Tensor> & fweights, const ::std::optional<at::Tensor> & aweights) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.cov(correction, fweights, aweights);
  };
  return wrap(dispatch_cov(_r.tensor(0), _r.toInt64(1), _r.optionalTensor(2), _r.optionalTensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// corrcoef
static PyObject * THPVariable_corrcoef(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "corrcoef(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::corrcoef(Tensor self) -> Tensor
  
  auto dispatch_corrcoef = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.corrcoef();
  };
  return wrap(dispatch_corrcoef(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_affine_grid_generator
static PyObject * THPVariable_cudnn_affine_grid_generator(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_affine_grid_generator(Tensor theta, int64_t N, int64_t C, int64_t H, int64_t W)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_affine_grid_generator(Tensor theta, int N, int C, int H, int W) -> Tensor grid
  
  auto dispatch_cudnn_affine_grid_generator = [](const at::Tensor & theta, int64_t N, int64_t C, int64_t H, int64_t W) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_affine_grid_generator(theta, N, C, H, W);
  };
  return wrap(dispatch_cudnn_affine_grid_generator(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_batch_norm
static PyObject * THPVariable_cudnn_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, double exponential_average_factor, double epsilon)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch_cudnn_batch_norm = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool training, double exponential_average_factor, double epsilon) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_batch_norm(input, weight, bias, running_mean, running_var, training, exponential_average_factor, epsilon);
  };
  return wrap(dispatch_cudnn_batch_norm(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_convolution
static PyObject * THPVariable_cudnn_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_convolution(Tensor input, Tensor weight, SymIntArrayRef padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(9)) {
    // aten::cudnn_convolution(Tensor self, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> Tensor
    
    auto dispatch_cudnn_convolution = [](const at::Tensor & self, const at::Tensor & weight, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cudnn_convolution_symint(self, weight, padding, stride, dilation, groups, benchmark, deterministic, allow_tf32);
    };
    return wrap(dispatch_cudnn_convolution(_r.tensor(0), _r.tensor(1), _r.symintlist(2), _r.symintlist(3), _r.symintlist(4), _r.toSymInt(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
  } else {
    // aten::cudnn_convolution.out(Tensor self, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cudnn_convolution_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & weight, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cudnn_convolution_symint_out(out, self, weight, padding, stride, dilation, groups, benchmark, deterministic, allow_tf32);
    };
    return wrap(dispatch_cudnn_convolution_out(_r.tensor(9), _r.tensor(0), _r.tensor(1), _r.symintlist(2), _r.symintlist(3), _r.symintlist(4), _r.toSymInt(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_convolution_transpose
static PyObject * THPVariable_cudnn_convolution_transpose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_convolution_transpose(Tensor input, Tensor weight, SymIntArrayRef padding, SymIntArrayRef output_padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_convolution_transpose(Tensor self, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> Tensor
  
  auto dispatch_cudnn_convolution_transpose = [](const at::Tensor & self, const at::Tensor & weight, c10::SymIntArrayRef padding, c10::SymIntArrayRef output_padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_convolution_transpose_symint(self, weight, padding, output_padding, stride, dilation, groups, benchmark, deterministic, allow_tf32);
  };
  return wrap(dispatch_cudnn_convolution_transpose(_r.tensor(0), _r.tensor(1), _r.symintlist(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6), _r.toBool(7), _r.toBool(8), _r.toBool(9)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _mps_convolution_transpose
static PyObject * THPVariable__mps_convolution_transpose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_mps_convolution_transpose(Tensor input, Tensor weight, SymIntArrayRef padding, SymIntArrayRef output_padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_mps_convolution_transpose(Tensor self, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch__mps_convolution_transpose = [](const at::Tensor & self, const at::Tensor & weight, c10::SymIntArrayRef padding, c10::SymIntArrayRef output_padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_mps_convolution_transpose_symint(self, weight, padding, output_padding, stride, dilation, groups);
  };
  return wrap(dispatch__mps_convolution_transpose(_r.tensor(0), _r.tensor(1), _r.symintlist(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_convolution_relu
static PyObject * THPVariable_cudnn_convolution_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_convolution_relu(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_convolution_relu(Tensor self, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch_cudnn_convolution_relu = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_convolution_relu_symint(self, weight, bias, stride, padding, dilation, groups);
  };
  return wrap(dispatch_cudnn_convolution_relu(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_convolution_add_relu
static PyObject * THPVariable_cudnn_convolution_add_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_convolution_add_relu(Tensor input, Tensor weight, Tensor z, Scalar? alpha, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_convolution_add_relu(Tensor self, Tensor weight, Tensor z, Scalar? alpha, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch_cudnn_convolution_add_relu = [](const at::Tensor & self, const at::Tensor & weight, const at::Tensor & z, const ::std::optional<at::Scalar> & alpha, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_convolution_add_relu_symint(self, weight, z, alpha, bias, stride, padding, dilation, groups);
  };
  return wrap(dispatch_cudnn_convolution_add_relu(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalarOptional(3), _r.optionalTensor(4), _r.symintlist(5), _r.symintlist(6), _r.symintlist(7), _r.toSymInt(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cudnn_grid_sampler
static PyObject * THPVariable_cudnn_grid_sampler(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cudnn_grid_sampler(Tensor input, Tensor grid)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cudnn_grid_sampler(Tensor self, Tensor grid) -> Tensor output
  
  auto dispatch_cudnn_grid_sampler = [](const at::Tensor & self, const at::Tensor & grid) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cudnn_grid_sampler(self, grid);
  };
  return wrap(dispatch_cudnn_grid_sampler(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// cummax
static PyObject * THPVariable_cummax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_cummax_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_cummax_out_structseq();
  static PythonArgParser parser({
    "cummax(Tensor input, int64_t dim, *, TensorList[2] out=None)",
    "cummax(Tensor input, Dimname dim, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::cummax(Tensor self, int dim) -> (Tensor values, Tensor indices)
        
        auto dispatch_cummax = [](const at::Tensor & self, int64_t dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.cummax(dim);
        };
        return wrap(NamedTuple, dispatch_cummax(_r.tensor(0), _r.toInt64(1)));
      } else {
        // aten::cummax.out(Tensor self, int dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(2);
        auto dispatch_cummax_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::cummax_out(values, indices, self, dim);
        };
        return wrap(NamedTuple1, dispatch_cummax_out(out[0], out[1], _r.tensor(0), _r.toInt64(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::cummax.dimname(Tensor self, Dimname dim) -> (Tensor values, Tensor indices)
        
        auto dispatch_cummax = [](const at::Tensor & self, at::Dimname dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.cummax(dim);
        };
        return wrap(NamedTuple, dispatch_cummax(_r.tensor(0), _r.dimname(1)));
      } else {
        // aten::cummax.dimname_out(Tensor self, Dimname dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(2);
        auto dispatch_cummax_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, at::Dimname dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::cummax_out(values, indices, self, dim);
        };
        return wrap(NamedTuple1, dispatch_cummax_out(out[0], out[1], _r.tensor(0), _r.dimname(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cummax_helper
static PyObject * THPVariable__cummax_helper(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cummax_helper(Tensor input, Tensor values, Tensor indices, int64_t dim)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cummax_helper(Tensor self, Tensor(a!) values, Tensor(b!) indices, int dim) -> ()
  
  auto dispatch__cummax_helper = [](const at::Tensor & self, at::Tensor values, at::Tensor indices, int64_t dim) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_cummax_helper(self, values, indices, dim);
  };
  dispatch__cummax_helper(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// cummin
static PyObject * THPVariable_cummin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_cummin_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_cummin_out_structseq();
  static PythonArgParser parser({
    "cummin(Tensor input, int64_t dim, *, TensorList[2] out=None)",
    "cummin(Tensor input, Dimname dim, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::cummin(Tensor self, int dim) -> (Tensor values, Tensor indices)
        
        auto dispatch_cummin = [](const at::Tensor & self, int64_t dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.cummin(dim);
        };
        return wrap(NamedTuple, dispatch_cummin(_r.tensor(0), _r.toInt64(1)));
      } else {
        // aten::cummin.out(Tensor self, int dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(2);
        auto dispatch_cummin_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::cummin_out(values, indices, self, dim);
        };
        return wrap(NamedTuple1, dispatch_cummin_out(out[0], out[1], _r.tensor(0), _r.toInt64(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::cummin.dimname(Tensor self, Dimname dim) -> (Tensor values, Tensor indices)
        
        auto dispatch_cummin = [](const at::Tensor & self, at::Dimname dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.cummin(dim);
        };
        return wrap(NamedTuple, dispatch_cummin(_r.tensor(0), _r.dimname(1)));
      } else {
        // aten::cummin.dimname_out(Tensor self, Dimname dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(2);
        auto dispatch_cummin_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, at::Dimname dim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::cummin_out(values, indices, self, dim);
        };
        return wrap(NamedTuple1, dispatch_cummin_out(out[0], out[1], _r.tensor(0), _r.dimname(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cummin_helper
static PyObject * THPVariable__cummin_helper(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cummin_helper(Tensor input, Tensor values, Tensor indices, int64_t dim)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cummin_helper(Tensor self, Tensor(a!) values, Tensor(b!) indices, int dim) -> ()
  
  auto dispatch__cummin_helper = [](const at::Tensor & self, at::Tensor values, at::Tensor indices, int64_t dim) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_cummin_helper(self, values, indices, dim);
  };
  dispatch__cummin_helper(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// cumprod
static PyObject * THPVariable_cumprod(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cumprod(Tensor input, int64_t dim, *, ScalarType? dtype=None, Tensor out=None)",
    "cumprod(Tensor input, Dimname dim, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::cumprod(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_cumprod = [](const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.cumprod(dim, dtype);
        };
        return wrap(dispatch_cumprod(_r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      } else {
        // aten::cumprod.out(Tensor self, int dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_cumprod_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cumprod_out(out, self, dim, dtype);
        };
        return wrap(dispatch_cumprod_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::cumprod.dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_cumprod = [](const at::Tensor & self, at::Dimname dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.cumprod(dim, dtype);
        };
        return wrap(dispatch_cumprod(_r.tensor(0), _r.dimname(1), _r.scalartypeOptional(2)));
      } else {
        // aten::cumprod.dimname_out(Tensor self, Dimname dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_cumprod_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cumprod_out(out, self, dim, dtype);
        };
        return wrap(dispatch_cumprod_out(_r.tensor(3), _r.tensor(0), _r.dimname(1), _r.scalartypeOptional(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// cumsum
static PyObject * THPVariable_cumsum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cumsum(Tensor input, int64_t dim, *, ScalarType? dtype=None, Tensor out=None)",
    "cumsum(Tensor input, Dimname dim, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::cumsum(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_cumsum = [](const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.cumsum(dim, dtype);
        };
        return wrap(dispatch_cumsum(_r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      } else {
        // aten::cumsum.out(Tensor self, int dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_cumsum_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cumsum_out(out, self, dim, dtype);
        };
        return wrap(dispatch_cumsum_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::cumsum.dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_cumsum = [](const at::Tensor & self, at::Dimname dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.cumsum(dim, dtype);
        };
        return wrap(dispatch_cumsum(_r.tensor(0), _r.dimname(1), _r.scalartypeOptional(2)));
      } else {
        // aten::cumsum.dimname_out(Tensor self, Dimname dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_cumsum_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::cumsum_out(out, self, dim, dtype);
        };
        return wrap(dispatch_cumsum_out(_r.tensor(3), _r.tensor(0), _r.dimname(1), _r.scalartypeOptional(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// cumulative_trapezoid
static PyObject * THPVariable_cumulative_trapezoid(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cumulative_trapezoid(Tensor y, Tensor x, *, int64_t dim=-1)",
    "cumulative_trapezoid(Tensor y, *, Scalar dx=1, int64_t dim=-1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::cumulative_trapezoid.x(Tensor y, Tensor x, *, int dim=-1) -> Tensor
      
      auto dispatch_cumulative_trapezoid = [](const at::Tensor & y, const at::Tensor & x, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::cumulative_trapezoid(y, x, dim);
      };
      return wrap(dispatch_cumulative_trapezoid(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::cumulative_trapezoid.dx(Tensor y, *, Scalar dx=1, int dim=-1) -> Tensor
      
      auto dispatch_cumulative_trapezoid = [](const at::Tensor & y, const at::Scalar & dx, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::cumulative_trapezoid(y, dx, dim);
      };
      return wrap(dispatch_cumulative_trapezoid(_r.tensor(0), _r.scalar(1), _r.toInt64(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// ctc_loss
static PyObject * THPVariable_ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ctc_loss(Tensor log_probs, Tensor targets, IntArrayRef input_lengths, IntArrayRef target_lengths, int64_t blank=0, int64_t reduction=at::Reduction::Mean, bool zero_infinity=False)",
    "ctc_loss(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int64_t blank=0, int64_t reduction=at::Reduction::Mean, bool zero_infinity=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::ctc_loss.IntList(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank=0, int reduction=Mean, bool zero_infinity=False) -> Tensor
      
      auto dispatch_ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, at::IntArrayRef input_lengths, at::IntArrayRef target_lengths, int64_t blank, int64_t reduction, bool zero_infinity) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::ctc_loss(log_probs, targets, input_lengths, target_lengths, blank, reduction, zero_infinity);
      };
      return wrap(dispatch_ctc_loss(_r.tensor(0), _r.tensor(1), _r.intlist(2), _r.intlist(3), _r.toInt64(4), _r.toInt64(5), _r.toBool(6)));
    }
    case 1: {
      // aten::ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank=0, int reduction=Mean, bool zero_infinity=False) -> Tensor
      
      auto dispatch_ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, const at::Tensor & input_lengths, const at::Tensor & target_lengths, int64_t blank, int64_t reduction, bool zero_infinity) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::ctc_loss(log_probs, targets, input_lengths, target_lengths, blank, reduction, zero_infinity);
      };
      return wrap(dispatch_ctc_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.toInt64(4), _r.toInt64(5), _r.toBool(6)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _ctc_loss
static PyObject * THPVariable__ctc_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_ctc_loss(Tensor log_probs, Tensor targets, IntArrayRef input_lengths, IntArrayRef target_lengths, int64_t blank=0, bool zero_infinity=False)",
    "_ctc_loss(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int64_t blank=0, bool zero_infinity=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank=0, bool zero_infinity=False) -> (Tensor, Tensor)
      
      auto dispatch__ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, at::IntArrayRef input_lengths, at::IntArrayRef target_lengths, int64_t blank, bool zero_infinity) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_ctc_loss(log_probs, targets, input_lengths, target_lengths, blank, zero_infinity);
      };
      return wrap(dispatch__ctc_loss(_r.tensor(0), _r.tensor(1), _r.intlist(2), _r.intlist(3), _r.toInt64(4), _r.toBool(5)));
    }
    case 1: {
      // aten::_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank=0, bool zero_infinity=False) -> (Tensor, Tensor)
      
      auto dispatch__ctc_loss = [](const at::Tensor & log_probs, const at::Tensor & targets, const at::Tensor & input_lengths, const at::Tensor & target_lengths, int64_t blank, bool zero_infinity) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_ctc_loss(log_probs, targets, input_lengths, target_lengths, blank, zero_infinity);
      };
      return wrap(dispatch__ctc_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.toInt64(4), _r.toBool(5)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// diag_embed
static PyObject * THPVariable_diag_embed(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diag_embed(Tensor input, int64_t offset=0, int64_t dim1=-2, int64_t dim2=-1)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::diag_embed(Tensor self, int offset=0, int dim1=-2, int dim2=-1) -> Tensor
  
  auto dispatch_diag_embed = [](const at::Tensor & self, int64_t offset, int64_t dim1, int64_t dim2) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.diag_embed(offset, dim1, dim2);
  };
  return wrap(dispatch_diag_embed(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// diagflat
static PyObject * THPVariable_diagflat(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diagflat(Tensor input, int64_t offset=0)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::diagflat(Tensor self, int offset=0) -> Tensor
  
  auto dispatch_diagflat = [](const at::Tensor & self, int64_t offset) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.diagflat(offset);
  };
  return wrap(dispatch_diagflat(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// diagonal
static PyObject * THPVariable_diagonal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diagonal(Tensor input, *, Dimname outdim, Dimname dim1, Dimname dim2, int64_t offset=0)",
    "diagonal(Tensor input, int64_t offset=0, int64_t dim1=0, int64_t dim2=1)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::diagonal.Dimname(Tensor(a) self, *, Dimname outdim, Dimname dim1, Dimname dim2, int offset=0) -> Tensor(a)
      
      auto dispatch_diagonal = [](const at::Tensor & self, at::Dimname outdim, at::Dimname dim1, at::Dimname dim2, int64_t offset) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.diagonal(outdim, dim1, dim2, offset);
      };
      return wrap(dispatch_diagonal(_r.tensor(0), _r.dimname(1), _r.dimname(2), _r.dimname(3), _r.toInt64(4)));
    }
    case 1: {
      // aten::diagonal(Tensor(a) self, int offset=0, int dim1=0, int dim2=1) -> Tensor(a)
      
      auto dispatch_diagonal = [](const at::Tensor & self, int64_t offset, int64_t dim1, int64_t dim2) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.diagonal(offset, dim1, dim2);
      };
      return wrap(dispatch_diagonal(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// diff
static PyObject * THPVariable_diff(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diff(Tensor input, int64_t n=1, int64_t dim=-1, Tensor? prepend=None, Tensor? append=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(5)) {
    // aten::diff(Tensor self, int n=1, int dim=-1, Tensor? prepend=None, Tensor? append=None) -> Tensor
    
    auto dispatch_diff = [](const at::Tensor & self, int64_t n, int64_t dim, const ::std::optional<at::Tensor> & prepend, const ::std::optional<at::Tensor> & append) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.diff(n, dim, prepend, append);
    };
    return wrap(dispatch_diff(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.optionalTensor(3), _r.optionalTensor(4)));
  } else {
    // aten::diff.out(Tensor self, int n=1, int dim=-1, Tensor? prepend=None, Tensor? append=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_diff_out = [](at::Tensor out, const at::Tensor & self, int64_t n, int64_t dim, const ::std::optional<at::Tensor> & prepend, const ::std::optional<at::Tensor> & append) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::diff_out(out, self, n, dim, prepend, append);
    };
    return wrap(dispatch_diff_out(_r.tensor(5), _r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.optionalTensor(3), _r.optionalTensor(4)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// gradient
static PyObject * THPVariable_gradient(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gradient(Tensor input, *, IntArrayRef dim, int64_t edge_order=1)",
    "gradient(Tensor input, *, Scalar spacing, IntArrayRef dim, int64_t edge_order=1)",
    "gradient(Tensor input, *, Scalar? spacing=None, int64_t? dim=None, int64_t edge_order=1)",
    "gradient(Tensor input, *, ScalarList spacing, int64_t? dim=None, int64_t edge_order=1)",
    "gradient(Tensor input, *, ScalarList spacing, IntArrayRef dim, int64_t edge_order=1)",
    "gradient(Tensor input, *, TensorList spacing, int64_t? dim=None, int64_t edge_order=1)",
    "gradient(Tensor input, *, TensorList spacing, IntArrayRef dim, int64_t edge_order=1)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::gradient.array(Tensor self, *, int[] dim, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, at::IntArrayRef dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.intlist(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::gradient.scalararray(Tensor self, *, Scalar spacing, int[] dim, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, const at::Scalar & spacing, at::IntArrayRef dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, spacing, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.scalar(1), _r.intlist(2), _r.toInt64(3)));
    }
    case 2: {
      // aten::gradient.scalarint(Tensor self, *, Scalar? spacing=None, int? dim=None, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, const ::std::optional<at::Scalar> & spacing, ::std::optional<int64_t> dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, spacing, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.scalarOptional(1), _r.toInt64Optional(2), _r.toInt64(3)));
    }
    case 3: {
      // aten::gradient.scalarrayint(Tensor self, *, Scalar[] spacing, int? dim=None, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, at::ArrayRef<at::Scalar> spacing, ::std::optional<int64_t> dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, spacing, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.scalarlist(1), _r.toInt64Optional(2), _r.toInt64(3)));
    }
    case 4: {
      // aten::gradient.scalarrayarray(Tensor self, *, Scalar[] spacing, int[] dim, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, at::ArrayRef<at::Scalar> spacing, at::IntArrayRef dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, spacing, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.scalarlist(1), _r.intlist(2), _r.toInt64(3)));
    }
    case 5: {
      // aten::gradient.tensorarrayint(Tensor self, *, Tensor[] spacing, int? dim=None, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, at::TensorList spacing, ::std::optional<int64_t> dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, spacing, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.tensorlist(1), _r.toInt64Optional(2), _r.toInt64(3)));
    }
    case 6: {
      // aten::gradient.tensorarray(Tensor self, *, Tensor[] spacing, int[] dim, int edge_order=1) -> Tensor[]
      
      auto dispatch_gradient = [](const at::Tensor & self, at::TensorList spacing, at::IntArrayRef dim, int64_t edge_order) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gradient(self, spacing, dim, edge_order);
      };
      return wrap(dispatch_gradient(_r.tensor(0), _r.tensorlist(1), _r.intlist(2), _r.toInt64(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// div
static PyObject * THPVariable_div(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "div(Tensor input, Tensor other, *, Tensor out=None)",
    "div(Tensor input, Tensor other, *, c10::string_view? rounding_mode, Tensor out=None)",
    "div(Tensor input, Scalar other, *, c10::string_view? rounding_mode)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::div.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_div = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.div(other);
        };
        return wrap(dispatch_div(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::div.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_div_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::div_out(out, self, other);
        };
        return wrap(dispatch_div_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::div.Tensor_mode(Tensor self, Tensor other, *, str? rounding_mode) -> Tensor
        
        auto dispatch_div = [](const at::Tensor & self, const at::Tensor & other, ::std::optional<c10::string_view> rounding_mode) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.div(other, rounding_mode);
        };
        return wrap(dispatch_div(_r.tensor(0), _r.tensor(1), _r.stringViewOptional(2)));
      } else {
        // aten::div.out_mode(Tensor self, Tensor other, *, str? rounding_mode, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_div_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, ::std::optional<c10::string_view> rounding_mode) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::div_out(out, self, other, rounding_mode);
        };
        return wrap(dispatch_div_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.stringViewOptional(2)));
      }
    }
    case 2: {
      // aten::div.Scalar_mode(Tensor self, Scalar other, *, str? rounding_mode) -> Tensor
      
      auto dispatch_div = [](const at::Tensor & self, const at::Scalar & other, ::std::optional<c10::string_view> rounding_mode) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.div(other, rounding_mode);
      };
      return wrap(dispatch_div(_r.tensor(0), _r.scalar(1), _r.stringViewOptional(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// divide
static PyObject * THPVariable_divide(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "divide(Tensor input, Tensor other, *, Tensor out=None)",
    "divide(Tensor input, Tensor other, *, c10::string_view? rounding_mode, Tensor out=None)",
    "divide(Tensor input, Scalar other)",
    "divide(Tensor input, Scalar other, *, c10::string_view? rounding_mode)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::divide.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_divide = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.divide(other);
        };
        return wrap(dispatch_divide(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::divide.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_divide_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::divide_out(out, self, other);
        };
        return wrap(dispatch_divide_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::divide.Tensor_mode(Tensor self, Tensor other, *, str? rounding_mode) -> Tensor
        
        auto dispatch_divide = [](const at::Tensor & self, const at::Tensor & other, ::std::optional<c10::string_view> rounding_mode) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.divide(other, rounding_mode);
        };
        return wrap(dispatch_divide(_r.tensor(0), _r.tensor(1), _r.stringViewOptional(2)));
      } else {
        // aten::divide.out_mode(Tensor self, Tensor other, *, str? rounding_mode, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_divide_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, ::std::optional<c10::string_view> rounding_mode) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::divide_out(out, self, other, rounding_mode);
        };
        return wrap(dispatch_divide_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.stringViewOptional(2)));
      }
    }
    case 2: {
      // aten::divide.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch_divide = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.divide(other);
      };
      return wrap(dispatch_divide(_r.tensor(0), _r.scalar(1)));
    }
    case 3: {
      // aten::divide.Scalar_mode(Tensor self, Scalar other, *, str? rounding_mode) -> Tensor
      
      auto dispatch_divide = [](const at::Tensor & self, const at::Scalar & other, ::std::optional<c10::string_view> rounding_mode) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.divide(other, rounding_mode);
      };
      return wrap(dispatch_divide(_r.tensor(0), _r.scalar(1), _r.stringViewOptional(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// true_divide
static PyObject * THPVariable_true_divide(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "true_divide(Tensor input, Tensor other, *, Tensor out=None)",
    "true_divide(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::true_divide.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_true_divide = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.true_divide(other);
        };
        return wrap(dispatch_true_divide(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::true_divide.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_true_divide_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::true_divide_out(out, self, other);
        };
        return wrap(dispatch_true_divide_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::true_divide.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch_true_divide = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.true_divide(other);
      };
      return wrap(dispatch_true_divide(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// dot
static PyObject * THPVariable_dot(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dot(Tensor input, Tensor tensor, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::dot(Tensor self, Tensor tensor) -> Tensor
    
    auto dispatch_dot = [](const at::Tensor & self, const at::Tensor & tensor) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.dot(tensor);
    };
    return wrap(dispatch_dot(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::dot.out(Tensor self, Tensor tensor, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_dot_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & tensor) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::dot_out(out, self, tensor);
    };
    return wrap(dispatch_dot_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// vdot
static PyObject * THPVariable_vdot(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "vdot(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::vdot(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_vdot = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.vdot(other);
    };
    return wrap(dispatch_vdot(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::vdot.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_vdot_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::vdot_out(out, self, other);
    };
    return wrap(dispatch_vdot_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// einsum
static PyObject * THPVariable_einsum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "einsum(c10::string_view equation, TensorList tensors, *, IntArrayRef? path=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::einsum(str equation, Tensor[] tensors, *, int[]? path=None) -> Tensor
  
  auto dispatch_einsum = [](c10::string_view equation, at::TensorList tensors, at::OptionalIntArrayRef path) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::einsum(equation, tensors, path);
  };
  return wrap(dispatch_einsum(_r.stringView(0), _r.tensorlist(1), _r.intlistOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// embedding
static PyObject * THPVariable_embedding(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "embedding(Tensor weight, Tensor indices, SymInt padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::embedding(Tensor weight, Tensor indices, SymInt padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensor
  
  auto dispatch_embedding = [](const at::Tensor & weight, const at::Tensor & indices, c10::SymInt padding_idx, bool scale_grad_by_freq, bool sparse) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::embedding_symint(weight, indices, padding_idx, scale_grad_by_freq, sparse);
  };
  return wrap(dispatch_embedding(_r.tensor(0), _r.tensor(1), _r.toSymInt(2), _r.toBool(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// embedding_renorm_
static PyObject * THPVariable_embedding_renorm_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "embedding_renorm_(Tensor input, Tensor indices, double max_norm, double norm_type)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!)
  
  auto dispatch_embedding_renorm_ = [](at::Tensor self, const at::Tensor & indices, double max_norm, double norm_type) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::embedding_renorm_(self, indices, max_norm, norm_type);
  };
  return wrap(dispatch_embedding_renorm_(_r.tensor(0), _r.tensor(1), _r.toDouble(2), _r.toDouble(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _embedding_bag_forward_only
static PyObject * THPVariable__embedding_bag_forward_only(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_embedding_bag_forward_only(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int64_t mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int64_t padding_idx=-1)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_embedding_bag_forward_only(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int padding_idx=-1) -> (Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch__embedding_bag_forward_only = [](const at::Tensor & weight, const at::Tensor & indices, const at::Tensor & offsets, bool scale_grad_by_freq, int64_t mode, bool sparse, const ::std::optional<at::Tensor> & per_sample_weights, bool include_last_offset, int64_t padding_idx) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_embedding_bag_forward_only(weight, indices, offsets, scale_grad_by_freq, mode, sparse, per_sample_weights, include_last_offset, padding_idx);
  };
  return wrap(dispatch__embedding_bag_forward_only(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3), _r.toInt64(4), _r.toBool(5), _r.optionalTensor(6), _r.toBool(7), _r.toInt64(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _rowwise_prune
static PyObject * THPVariable__rowwise_prune(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_rowwise_prune(Tensor weight, Tensor mask, ScalarType compressed_indices_dtype)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_rowwise_prune(Tensor weight, Tensor mask, ScalarType compressed_indices_dtype) -> (Tensor, Tensor)
  
  auto dispatch__rowwise_prune = [](const at::Tensor & weight, const at::Tensor & mask, at::ScalarType compressed_indices_dtype) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_rowwise_prune(weight, mask, compressed_indices_dtype);
  };
  return wrap(dispatch__rowwise_prune(_r.tensor(0), _r.tensor(1), _r.scalartype(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// row_stack
static PyObject * THPVariable_row_stack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "row_stack(TensorList tensors, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::row_stack(Tensor[] tensors) -> Tensor
    
    auto dispatch_row_stack = [](at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::row_stack(tensors);
    };
    return wrap(dispatch_row_stack(_r.tensorlist(0)));
  } else {
    // aten::row_stack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_row_stack_out = [](at::Tensor out, at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::row_stack_out(out, tensors);
    };
    return wrap(dispatch_row_stack_out(_r.tensor(1), _r.tensorlist(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// embedding_bag
static PyObject * THPVariable_embedding_bag(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq, int64_t mode, bool sparse, Tensor? per_sample_weights, bool include_last_offset, int64_t? padding_idx)",
    "embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int64_t mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::embedding_bag.padding_idx(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq, int mode, bool sparse, Tensor? per_sample_weights, bool include_last_offset, int? padding_idx) -> (Tensor, Tensor, Tensor, Tensor)
      
      auto dispatch_embedding_bag = [](const at::Tensor & weight, const at::Tensor & indices, const at::Tensor & offsets, bool scale_grad_by_freq, int64_t mode, bool sparse, const ::std::optional<at::Tensor> & per_sample_weights, bool include_last_offset, ::std::optional<int64_t> padding_idx) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::embedding_bag(weight, indices, offsets, scale_grad_by_freq, mode, sparse, per_sample_weights, include_last_offset, padding_idx);
      };
      return wrap(dispatch_embedding_bag(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3), _r.toInt64(4), _r.toBool(5), _r.optionalTensor(6), _r.toBool(7), _r.toInt64Optional(8)));
    }
    case 1: {
      // aten::embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False) -> (Tensor, Tensor, Tensor, Tensor)
      
      auto dispatch_embedding_bag = [](const at::Tensor & weight, const at::Tensor & indices, const at::Tensor & offsets, bool scale_grad_by_freq, int64_t mode, bool sparse, const ::std::optional<at::Tensor> & per_sample_weights, bool include_last_offset) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::embedding_bag(weight, indices, offsets, scale_grad_by_freq, mode, sparse, per_sample_weights, include_last_offset);
      };
      return wrap(dispatch_embedding_bag(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3), _r.toInt64(4), _r.toBool(5), _r.optionalTensor(6), _r.toBool(7)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _embedding_bag
static PyObject * THPVariable__embedding_bag(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int64_t mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int64_t padding_idx=-1)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int padding_idx=-1) -> (Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch__embedding_bag = [](const at::Tensor & weight, const at::Tensor & indices, const at::Tensor & offsets, bool scale_grad_by_freq, int64_t mode, bool sparse, const ::std::optional<at::Tensor> & per_sample_weights, bool include_last_offset, int64_t padding_idx) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_embedding_bag(weight, indices, offsets, scale_grad_by_freq, mode, sparse, per_sample_weights, include_last_offset, padding_idx);
  };
  return wrap(dispatch__embedding_bag(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3), _r.toInt64(4), _r.toBool(5), _r.optionalTensor(6), _r.toBool(7), _r.toInt64(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// empty
static PyObject * THPVariable_empty(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "empty(IntArrayRef size, *, DimnameList? names, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "empty(SymIntArrayRef size, *, MemoryFormat? memory_format=None, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::empty.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
      auto __names = _r.toDimnameListOptional(1);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_empty = [](at::IntArrayRef size, ::std::optional<at::DimnameList> names, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::empty(size, names, options, memory_format);
      };
      return wrap(dispatch_empty(_r.intlist(0), names, options, _r.memoryformatOptional(2)));
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::empty.memory_format(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(3))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_empty = [](c10::SymIntArrayRef size, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::empty_symint(size, options, memory_format);
        };
        return wrap(dispatch_empty(_r.symintlist(0), options, _r.memoryformatOptional(1)));
      } else {
        // aten::empty.out(SymInt[] size, *, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeOptional(3),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_empty_out = [](at::Tensor out, c10::SymIntArrayRef size, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::empty_symint_out(out, size, memory_format);
        };
        return wrap(dispatch_empty_out(_r.tensor(2), _r.symintlist(0), _r.memoryformatOptional(1)).set_requires_grad(_r.toBool(7)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// empty_permuted
static PyObject * THPVariable_empty_permuted(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "empty_permuted(SymIntArrayRef size, IntArrayRef physical_layout, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::empty_permuted(SymInt[] size, int[] physical_layout, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_empty_permuted = [](c10::SymIntArrayRef size, at::IntArrayRef physical_layout, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::empty_permuted_symint(size, physical_layout, options);
  };
  return wrap(dispatch_empty_permuted(_r.symintlist(0), _r.intlist(1), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _empty_affine_quantized
static PyObject * THPVariable__empty_affine_quantized(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_empty_affine_quantized(SymIntArrayRef size, *, double scale=1, int64_t zero_point=0, MemoryFormat? memory_format=c10::MemoryFormat::Contiguous, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_empty_affine_quantized(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, float scale=1, int zero_point=0, MemoryFormat? memory_format=contiguous_format) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(4))
      .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(5))
      .requires_grad(_r.toBool(8))
      .pinned_memory(_r.toBool(7));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch__empty_affine_quantized = [](c10::SymIntArrayRef size, at::TensorOptions options, double scale, int64_t zero_point, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::_empty_affine_quantized_symint(size, options, scale, zero_point, memory_format);
  };
  return wrap(dispatch__empty_affine_quantized(_r.symintlist(0), options, _r.toDouble(1), _r.toInt64(2), _r.memoryformat(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _empty_per_channel_affine_quantized
static PyObject * THPVariable__empty_per_channel_affine_quantized(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_empty_per_channel_affine_quantized(SymIntArrayRef size, *, Tensor scales, Tensor zero_points, int64_t axis, MemoryFormat? memory_format=c10::MemoryFormat::Contiguous, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_empty_per_channel_affine_quantized(SymInt[] size, *, Tensor scales, Tensor zero_points, int axis, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=contiguous_format) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(5))
      .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(6))
      .requires_grad(_r.toBool(9))
      .pinned_memory(_r.toBool(8));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch__empty_per_channel_affine_quantized = [](c10::SymIntArrayRef size, const at::Tensor & scales, const at::Tensor & zero_points, int64_t axis, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::_empty_per_channel_affine_quantized_symint(size, scales, zero_points, axis, options, memory_format);
  };
  return wrap(dispatch__empty_per_channel_affine_quantized(_r.symintlist(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), options, _r.memoryformat(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _resize_output_
static PyObject * THPVariable__resize_output_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_resize_output_(Tensor input, SymIntArrayRef size, Device device)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_resize_output_(Tensor(a!) self, SymInt[] size, Device device) -> Tensor(a!)
  
  auto dispatch__resize_output_ = [](const at::Tensor & self, c10::SymIntArrayRef size, at::Device device) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_resize_output__symint(self, size, device);
  };
  return wrap(dispatch__resize_output_(_r.tensor(0), _r.symintlist(1), _r.device(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// empty_quantized
static PyObject * THPVariable_empty_quantized(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "empty_quantized(IntArrayRef size, Tensor qtensor, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::empty_quantized(int[] size, Tensor qtensor, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(3))
      .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(4))
      .requires_grad(_r.toBool(7))
      .pinned_memory(_r.toBool(6));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_empty_quantized = [](at::IntArrayRef size, const at::Tensor & qtensor, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::empty_quantized(size, qtensor, options, memory_format);
  };
  return wrap(dispatch_empty_quantized(_r.intlist(0), _r.tensor(1), options, _r.memoryformatOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// empty_like
static PyObject * THPVariable_empty_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "empty_like(Tensor input, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::empty_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  auto self = _r.tensor(0);
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceOptional(4))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_empty_like = [](const at::Tensor & self, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::empty_like(self, options, memory_format);
  };
  return wrap(dispatch_empty_like(self, options, _r.memoryformatOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// empty_strided
static PyObject * THPVariable_empty_strided(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "empty_strided(SymIntArrayRef size, SymIntArrayRef stride, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::empty_strided(SymInt[] size, SymInt[] stride, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_empty_strided = [](c10::SymIntArrayRef size, c10::SymIntArrayRef stride, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::empty_strided_symint(size, stride, options);
  };
  return wrap(dispatch_empty_strided(_r.symintlist(0), _r.symintlist(1), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// erf
static PyObject * THPVariable_erf(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "erf(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::erf(Tensor self) -> Tensor
    
    auto dispatch_erf = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.erf();
    };
    return wrap(dispatch_erf(_r.tensor(0)));
  } else {
    // aten::erf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_erf_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::erf_out(out, self);
    };
    return wrap(dispatch_erf_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// erf_
static PyObject * THPVariable_erf_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "erf_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::erf_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_erf_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.erf_();
  };
  return wrap(dispatch_erf_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// erfc
static PyObject * THPVariable_erfc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "erfc(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::erfc(Tensor self) -> Tensor
    
    auto dispatch_erfc = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.erfc();
    };
    return wrap(dispatch_erfc(_r.tensor(0)));
  } else {
    // aten::erfc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_erfc_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::erfc_out(out, self);
    };
    return wrap(dispatch_erfc_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// erfc_
static PyObject * THPVariable_erfc_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "erfc_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::erfc_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_erfc_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.erfc_();
  };
  return wrap(dispatch_erfc_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// exp
static PyObject * THPVariable_exp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "exp(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::exp(Tensor self) -> Tensor
    
    auto dispatch_exp = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.exp();
    };
    return wrap(dispatch_exp(_r.tensor(0)));
  } else {
    // aten::exp.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_exp_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::exp_out(out, self);
    };
    return wrap(dispatch_exp_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// exp_
static PyObject * THPVariable_exp_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "exp_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::exp_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_exp_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.exp_();
  };
  return wrap(dispatch_exp_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// exp2
static PyObject * THPVariable_exp2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "exp2(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::exp2(Tensor self) -> Tensor
    
    auto dispatch_exp2 = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.exp2();
    };
    return wrap(dispatch_exp2(_r.tensor(0)));
  } else {
    // aten::exp2.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_exp2_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::exp2_out(out, self);
    };
    return wrap(dispatch_exp2_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// exp2_
static PyObject * THPVariable_exp2_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "exp2_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::exp2_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_exp2_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.exp2_();
  };
  return wrap(dispatch_exp2_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// expm1
static PyObject * THPVariable_expm1(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "expm1(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::expm1(Tensor self) -> Tensor
    
    auto dispatch_expm1 = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.expm1();
    };
    return wrap(dispatch_expm1(_r.tensor(0)));
  } else {
    // aten::expm1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_expm1_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::expm1_out(out, self);
    };
    return wrap(dispatch_expm1_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// expm1_
static PyObject * THPVariable_expm1_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "expm1_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::expm1_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_expm1_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.expm1_();
  };
  return wrap(dispatch_expm1_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// eye
static PyObject * THPVariable_eye(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "eye(SymInt n, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "eye(SymInt n, SymInt m, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::eye(SymInt n, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(2))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_eye = [](c10::SymInt n, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::eye_symint(n, options);
        };
        return wrap(dispatch_eye(_r.toSymInt(0), options));
      } else {
        // aten::eye.out(SymInt n, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeOptional(2),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_eye_out = [](at::Tensor out, c10::SymInt n) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::eye_symint_out(out, n);
        };
        return wrap(dispatch_eye_out(_r.tensor(1), _r.toSymInt(0)).set_requires_grad(_r.toBool(6)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::eye.m(SymInt n, SymInt m, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(3))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_eye = [](c10::SymInt n, c10::SymInt m, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::eye_symint(n, m, options);
        };
        return wrap(dispatch_eye(_r.toSymInt(0), _r.toSymInt(1), options));
      } else {
        // aten::eye.m_out(SymInt n, SymInt m, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeOptional(3),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_eye_out = [](at::Tensor out, c10::SymInt n, c10::SymInt m) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::eye_symint_out(out, n, m);
        };
        return wrap(dispatch_eye_out(_r.tensor(2), _r.toSymInt(0), _r.toSymInt(1)).set_requires_grad(_r.toBool(7)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// flatten
static PyObject * THPVariable_flatten(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "flatten(Tensor input, int64_t start_dim, int64_t end_dim, Dimname out_dim)",
    "flatten(Tensor input, int64_t start_dim=0, int64_t end_dim=-1)",
    "flatten(Tensor input, Dimname start_dim, Dimname end_dim, Dimname out_dim)",
    "flatten(Tensor input, DimnameList dims, Dimname out_dim)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::flatten.named_out_dim(Tensor(a) self, int start_dim, int end_dim, Dimname out_dim) -> Tensor(a)
      
      auto dispatch_flatten = [](const at::Tensor & self, int64_t start_dim, int64_t end_dim, at::Dimname out_dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.flatten(start_dim, end_dim, out_dim);
      };
      return wrap(dispatch_flatten(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.dimname(3)));
    }
    case 1: {
      // aten::flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a)
      
      auto dispatch_flatten = [](const at::Tensor & self, int64_t start_dim, int64_t end_dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.flatten(start_dim, end_dim);
      };
      return wrap(dispatch_flatten(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
    }
    case 2: {
      // aten::flatten.using_names(Tensor(a) self, Dimname start_dim, Dimname end_dim, Dimname out_dim) -> Tensor(a)
      
      auto dispatch_flatten = [](const at::Tensor & self, at::Dimname start_dim, at::Dimname end_dim, at::Dimname out_dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.flatten(start_dim, end_dim, out_dim);
      };
      return wrap(dispatch_flatten(_r.tensor(0), _r.dimname(1), _r.dimname(2), _r.dimname(3)));
    }
    case 3: {
      // aten::flatten.DimnameList(Tensor(a) self, Dimname[] dims, Dimname out_dim) -> Tensor(a)
      
      auto dispatch_flatten = [](const at::Tensor & self, at::DimnameList dims, at::Dimname out_dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.flatten(dims, out_dim);
      };
      return wrap(dispatch_flatten(_r.tensor(0), _r.dimnamelist(1), _r.dimname(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// unflatten
static PyObject * THPVariable_unflatten(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unflatten(Tensor input, Dimname dim, SymIntArrayRef sizes, DimnameList names)",
    "unflatten(Tensor input, int64_t dim, SymIntArrayRef sizes)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::unflatten.Dimname(Tensor(a) self, Dimname dim, SymInt[] sizes, Dimname[] names) -> Tensor(a)
      
      auto dispatch_unflatten = [](const at::Tensor & self, at::Dimname dim, c10::SymIntArrayRef sizes, at::DimnameList names) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.unflatten_symint(dim, sizes, names);
      };
      return wrap(dispatch_unflatten(_r.tensor(0), _r.dimname(1), _r.symintlist(2), _r.dimnamelist(3)));
    }
    case 1: {
      // aten::unflatten.int(Tensor(a) self, int dim, SymInt[] sizes) -> Tensor(a)
      
      auto dispatch_unflatten = [](const at::Tensor & self, int64_t dim, c10::SymIntArrayRef sizes) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.unflatten_symint(dim, sizes);
      };
      return wrap(dispatch_unflatten(_r.tensor(0), _r.toInt64(1), _r.symintlist(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// fill
static PyObject * THPVariable_fill(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fill(Tensor input, Tensor value)",
    "fill(Tensor input, Scalar value)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::fill.Tensor(Tensor self, Tensor value) -> Tensor
      
      auto dispatch_fill = [](const at::Tensor & self, const at::Tensor & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::fill(self, value);
      };
      return wrap(dispatch_fill(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::fill.Scalar(Tensor self, Scalar value) -> Tensor
      
      auto dispatch_fill = [](const at::Tensor & self, const at::Scalar & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::fill(self, value);
      };
      return wrap(dispatch_fill(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// fill_
static PyObject * THPVariable_fill_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fill_(Tensor input, Tensor value)",
    "fill_(Tensor input, Scalar value)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::fill_.Tensor(Tensor(a!) self, Tensor value) -> Tensor(a!)
      
      auto dispatch_fill_ = [](at::Tensor self, const at::Tensor & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.fill_(value);
      };
      return wrap(dispatch_fill_(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::fill_.Scalar(Tensor(a!) self, Scalar value) -> Tensor(a!)
      
      auto dispatch_fill_ = [](at::Tensor self, const at::Scalar & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.fill_(value);
      };
      return wrap(dispatch_fill_(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// floor
static PyObject * THPVariable_floor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "floor(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::floor(Tensor self) -> Tensor
    
    auto dispatch_floor = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.floor();
    };
    return wrap(dispatch_floor(_r.tensor(0)));
  } else {
    // aten::floor.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_floor_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::floor_out(out, self);
    };
    return wrap(dispatch_floor_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// floor_
static PyObject * THPVariable_floor_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "floor_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::floor_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_floor_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.floor_();
  };
  return wrap(dispatch_floor_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// floor_divide
static PyObject * THPVariable_floor_divide(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "floor_divide(Tensor input, Tensor other, *, Tensor out=None)",
    "floor_divide(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::floor_divide(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_floor_divide = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.floor_divide(other);
        };
        return wrap(dispatch_floor_divide(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::floor_divide.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_floor_divide_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::floor_divide_out(out, self, other);
        };
        return wrap(dispatch_floor_divide_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::floor_divide.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch_floor_divide = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.floor_divide(other);
      };
      return wrap(dispatch_floor_divide(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// frac
static PyObject * THPVariable_frac(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "frac(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::frac(Tensor self) -> Tensor
    
    auto dispatch_frac = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.frac();
    };
    return wrap(dispatch_frac(_r.tensor(0)));
  } else {
    // aten::frac.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_frac_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::frac_out(out, self);
    };
    return wrap(dispatch_frac_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// frac_
static PyObject * THPVariable_frac_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "frac_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::frac_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_frac_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.frac_();
  };
  return wrap(dispatch_frac_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// full
static PyObject * THPVariable_full(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "full(IntArrayRef size, Scalar fill_value, *, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "full(SymIntArrayRef size, Scalar fill_value, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::full.names(int[] size, Scalar fill_value, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(2);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_full = [](at::IntArrayRef size, const at::Scalar & fill_value, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::full(size, fill_value, names, options);
      };
      return wrap(dispatch_full(_r.intlist(0), _r.scalar(1), names, options));
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::full(SymInt[] size, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(3))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_full = [](c10::SymIntArrayRef size, const at::Scalar & fill_value, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::full_symint(size, fill_value, options);
        };
        return wrap(dispatch_full(_r.symintlist(0), _r.scalar(1), options));
      } else {
        // aten::full.out(SymInt[] size, Scalar fill_value, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeOptional(3),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_full_out = [](at::Tensor out, c10::SymIntArrayRef size, const at::Scalar & fill_value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::full_symint_out(out, size, fill_value);
        };
        return wrap(dispatch_full_out(_r.tensor(2), _r.symintlist(0), _r.scalar(1)).set_requires_grad(_r.toBool(7)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// full_like
static PyObject * THPVariable_full_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "full_like(Tensor input, Scalar fill_value, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::full_like(Tensor self, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  auto self = _r.tensor(0);
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(3))
      .device(_r.deviceOptional(5))
      .layout(_r.layoutOptional(4))
      .requires_grad(_r.toBool(7))
      .pinned_memory(_r.toBool(6));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_full_like = [](const at::Tensor & self, const at::Scalar & fill_value, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::full_like(self, fill_value, options, memory_format);
  };
  return wrap(dispatch_full_like(self, _r.scalar(1), options, _r.memoryformatOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// from_file
static PyObject * THPVariable_from_file(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "from_file(c10::string_view filename, bool? shared=None, int64_t? size=0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::from_file(str filename, bool? shared=None, int? size=0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(3))
      .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(4))
      .requires_grad(_r.toBool(7))
      .pinned_memory(_r.toBool(6));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_from_file = [](c10::string_view filename, ::std::optional<bool> shared, ::std::optional<int64_t> size, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::from_file(filename, shared, size, options);
  };
  return wrap(dispatch_from_file(_r.stringView(0), _r.toBoolOptional(1), _r.toInt64(2), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// gcd
static PyObject * THPVariable_gcd(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gcd(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::gcd(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_gcd = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.gcd(other);
    };
    return wrap(dispatch_gcd(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::gcd.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_gcd_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::gcd_out(out, self, other);
    };
    return wrap(dispatch_gcd_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// gcd_
static PyObject * THPVariable_gcd_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gcd_(Tensor input, Tensor other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::gcd_(Tensor(a!) self, Tensor other) -> Tensor(a!)
  
  auto dispatch_gcd_ = [](at::Tensor self, const at::Tensor & other) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.gcd_(other);
  };
  return wrap(dispatch_gcd_(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// lcm
static PyObject * THPVariable_lcm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lcm(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::lcm(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_lcm = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.lcm(other);
    };
    return wrap(dispatch_lcm(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::lcm.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_lcm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::lcm_out(out, self, other);
    };
    return wrap(dispatch_lcm_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// lcm_
static PyObject * THPVariable_lcm_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lcm_(Tensor input, Tensor other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::lcm_(Tensor(a!) self, Tensor other) -> Tensor(a!)
  
  auto dispatch_lcm_ = [](at::Tensor self, const at::Tensor & other) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.lcm_(other);
  };
  return wrap(dispatch_lcm_(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// grid_sampler
static PyObject * THPVariable_grid_sampler(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "grid_sampler(Tensor input, Tensor grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::grid_sampler(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor
  
  auto dispatch_grid_sampler = [](const at::Tensor & input, const at::Tensor & grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::grid_sampler(input, grid, interpolation_mode, padding_mode, align_corners);
  };
  return wrap(dispatch_grid_sampler(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toInt64(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// grid_sampler_2d
static PyObject * THPVariable_grid_sampler_2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "grid_sampler_2d(Tensor input, Tensor grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::grid_sampler_2d(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor
  
  auto dispatch_grid_sampler_2d = [](const at::Tensor & input, const at::Tensor & grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::grid_sampler_2d(input, grid, interpolation_mode, padding_mode, align_corners);
  };
  return wrap(dispatch_grid_sampler_2d(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toInt64(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _grid_sampler_2d_cpu_fallback
static PyObject * THPVariable__grid_sampler_2d_cpu_fallback(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_grid_sampler_2d_cpu_fallback(Tensor input, Tensor grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_grid_sampler_2d_cpu_fallback(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor
  
  auto dispatch__grid_sampler_2d_cpu_fallback = [](const at::Tensor & input, const at::Tensor & grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_grid_sampler_2d_cpu_fallback(input, grid, interpolation_mode, padding_mode, align_corners);
  };
  return wrap(dispatch__grid_sampler_2d_cpu_fallback(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toInt64(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// grid_sampler_3d
static PyObject * THPVariable_grid_sampler_3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "grid_sampler_3d(Tensor input, Tensor grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::grid_sampler_3d(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor
  
  auto dispatch_grid_sampler_3d = [](const at::Tensor & input, const at::Tensor & grid, int64_t interpolation_mode, int64_t padding_mode, bool align_corners) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::grid_sampler_3d(input, grid, interpolation_mode, padding_mode, align_corners);
  };
  return wrap(dispatch_grid_sampler_3d(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toInt64(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// hann_window
static PyObject * THPVariable_hann_window(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hann_window(int64_t window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "hann_window(int64_t window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::hann_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(1))
          .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(2))
          .requires_grad(_r.toBool(5))
          .pinned_memory(_r.toBool(4));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_hann_window = [](int64_t window_length, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::hann_window(window_length, options);
      };
      return wrap(dispatch_hann_window(_r.toInt64(0), options));
    }
    case 1: {
      // aten::hann_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_hann_window = [](int64_t window_length, bool periodic, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::hann_window(window_length, periodic, options);
      };
      return wrap(dispatch_hann_window(_r.toInt64(0), _r.toBool(1), options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// hamming_window
static PyObject * THPVariable_hamming_window(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hamming_window(int64_t window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "hamming_window(int64_t window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "hamming_window(int64_t window_length, bool periodic, double alpha, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "hamming_window(int64_t window_length, bool periodic, double alpha, double beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::hamming_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(1))
          .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(2))
          .requires_grad(_r.toBool(5))
          .pinned_memory(_r.toBool(4));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_hamming_window = [](int64_t window_length, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::hamming_window(window_length, options);
      };
      return wrap(dispatch_hamming_window(_r.toInt64(0), options));
    }
    case 1: {
      // aten::hamming_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_hamming_window = [](int64_t window_length, bool periodic, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::hamming_window(window_length, periodic, options);
      };
      return wrap(dispatch_hamming_window(_r.toInt64(0), _r.toBool(1), options));
    }
    case 2: {
      // aten::hamming_window.periodic_alpha(int window_length, bool periodic, float alpha, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_hamming_window = [](int64_t window_length, bool periodic, double alpha, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::hamming_window(window_length, periodic, alpha, options);
      };
      return wrap(dispatch_hamming_window(_r.toInt64(0), _r.toBool(1), _r.toDouble(2), options));
    }
    case 3: {
      // aten::hamming_window.periodic_alpha_beta(int window_length, bool periodic, float alpha, float beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(4))
          .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(5))
          .requires_grad(_r.toBool(8))
          .pinned_memory(_r.toBool(7));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_hamming_window = [](int64_t window_length, bool periodic, double alpha, double beta, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::hamming_window(window_length, periodic, alpha, beta, options);
      };
      return wrap(dispatch_hamming_window(_r.toInt64(0), _r.toBool(1), _r.toDouble(2), _r.toDouble(3), options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// kaiser_window
static PyObject * THPVariable_kaiser_window(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "kaiser_window(int64_t window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "kaiser_window(int64_t window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "kaiser_window(int64_t window_length, bool periodic, double beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::kaiser_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(1))
          .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(2))
          .requires_grad(_r.toBool(5))
          .pinned_memory(_r.toBool(4));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_kaiser_window = [](int64_t window_length, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::kaiser_window(window_length, options);
      };
      return wrap(dispatch_kaiser_window(_r.toInt64(0), options));
    }
    case 1: {
      // aten::kaiser_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_kaiser_window = [](int64_t window_length, bool periodic, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::kaiser_window(window_length, periodic, options);
      };
      return wrap(dispatch_kaiser_window(_r.toInt64(0), _r.toBool(1), options));
    }
    case 2: {
      // aten::kaiser_window.beta(int window_length, bool periodic, float beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_kaiser_window = [](int64_t window_length, bool periodic, double beta, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::kaiser_window(window_length, periodic, beta, options);
      };
      return wrap(dispatch_kaiser_window(_r.toInt64(0), _r.toBool(1), _r.toDouble(2), options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// hinge_embedding_loss
static PyObject * THPVariable_hinge_embedding_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hinge_embedding_loss(Tensor input, Tensor target, double margin=1.0, int64_t reduction=at::Reduction::Mean)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::hinge_embedding_loss(Tensor self, Tensor target, float margin=1.0, int reduction=Mean) -> Tensor
  
  auto dispatch_hinge_embedding_loss = [](const at::Tensor & self, const at::Tensor & target, double margin, int64_t reduction) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::hinge_embedding_loss(self, target, margin, reduction);
  };
  return wrap(dispatch_hinge_embedding_loss(_r.tensor(0), _r.tensor(1), _r.toDouble(2), _r.toInt64(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// group_norm
static PyObject * THPVariable_group_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "group_norm(Tensor input, int64_t num_groups, Tensor? weight=None, Tensor? bias=None, double eps=1e-05, bool cudnn_enabled=True)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::group_norm(Tensor input, int num_groups, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enabled=True) -> Tensor
  
  auto dispatch_group_norm = [](const at::Tensor & input, int64_t num_groups, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, double eps, bool cudnn_enabled) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::group_norm(input, num_groups, weight, bias, eps, cudnn_enabled);
  };
  return wrap(dispatch_group_norm(_r.tensor(0), _r.toInt64(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.toDouble(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// native_group_norm
static PyObject * THPVariable_native_group_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "native_group_norm(Tensor input, Tensor? weight, Tensor? bias, SymInt N, SymInt C, SymInt HxW, int64_t group, double eps)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::native_group_norm(Tensor input, Tensor? weight, Tensor? bias, SymInt N, SymInt C, SymInt HxW, int group, float eps) -> (Tensor, Tensor, Tensor)
  
  auto dispatch_native_group_norm = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, c10::SymInt N, c10::SymInt C, c10::SymInt HxW, int64_t group, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::native_group_norm_symint(input, weight, bias, N, C, HxW, group, eps);
  };
  return wrap(dispatch_native_group_norm(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.toSymInt(3), _r.toSymInt(4), _r.toSymInt(5), _r.toInt64(6), _r.toDouble(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fft_r2c
static PyObject * THPVariable__fft_r2c(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fft_r2c(Tensor input, IntArrayRef dim, int64_t normalization, bool onesided, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_fft_r2c(Tensor self, int[] dim, int normalization, bool onesided) -> Tensor
    
    auto dispatch__fft_r2c = [](const at::Tensor & self, at::IntArrayRef dim, int64_t normalization, bool onesided) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fft_r2c(self, dim, normalization, onesided);
    };
    return wrap(dispatch__fft_r2c(_r.tensor(0), _r.intlist(1), _r.toInt64(2), _r.toBool(3)));
  } else {
    // aten::_fft_r2c.out(Tensor self, int[] dim, int normalization, bool onesided, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__fft_r2c_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, int64_t normalization, bool onesided) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fft_r2c_out(out, self, dim, normalization, onesided);
    };
    return wrap(dispatch__fft_r2c_out(_r.tensor(4), _r.tensor(0), _r.intlist(1), _r.toInt64(2), _r.toBool(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fft_c2r
static PyObject * THPVariable__fft_c2r(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fft_c2r(Tensor input, IntArrayRef dim, int64_t normalization, SymInt last_dim_size, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_fft_c2r(Tensor self, int[] dim, int normalization, SymInt last_dim_size) -> Tensor
    
    auto dispatch__fft_c2r = [](const at::Tensor & self, at::IntArrayRef dim, int64_t normalization, c10::SymInt last_dim_size) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fft_c2r_symint(self, dim, normalization, last_dim_size);
    };
    return wrap(dispatch__fft_c2r(_r.tensor(0), _r.intlist(1), _r.toInt64(2), _r.toSymInt(3)));
  } else {
    // aten::_fft_c2r.out(Tensor self, int[] dim, int normalization, SymInt last_dim_size, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__fft_c2r_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, int64_t normalization, c10::SymInt last_dim_size) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fft_c2r_symint_out(out, self, dim, normalization, last_dim_size);
    };
    return wrap(dispatch__fft_c2r_out(_r.tensor(4), _r.tensor(0), _r.intlist(1), _r.toInt64(2), _r.toSymInt(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fft_c2c
static PyObject * THPVariable__fft_c2c(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fft_c2c(Tensor input, SymIntArrayRef dim, int64_t normalization, bool forward, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_fft_c2c(Tensor self, SymInt[] dim, int normalization, bool forward) -> Tensor
    
    auto dispatch__fft_c2c = [](const at::Tensor & self, c10::SymIntArrayRef dim, int64_t normalization, bool forward) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fft_c2c_symint(self, dim, normalization, forward);
    };
    return wrap(dispatch__fft_c2c(_r.tensor(0), _r.symintlist(1), _r.toInt64(2), _r.toBool(3)));
  } else {
    // aten::_fft_c2c.out(Tensor self, SymInt[] dim, int normalization, bool forward, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__fft_c2c_out = [](at::Tensor out, const at::Tensor & self, c10::SymIntArrayRef dim, int64_t normalization, bool forward) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fft_c2c_symint_out(out, self, dim, normalization, forward);
    };
    return wrap(dispatch__fft_c2c_out(_r.tensor(4), _r.tensor(0), _r.symintlist(1), _r.toInt64(2), _r.toBool(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_compressed_sparse_indices
static PyObject * THPVariable__validate_compressed_sparse_indices(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_compressed_sparse_indices(bool is_crow, Tensor compressed_idx, Tensor plain_idx, int64_t cdim, int64_t dim, int64_t nnz)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_compressed_sparse_indices(bool is_crow, Tensor compressed_idx, Tensor plain_idx, int cdim, int dim, int nnz) -> ()
  
  auto dispatch__validate_compressed_sparse_indices = [](bool is_crow, const at::Tensor & compressed_idx, const at::Tensor & plain_idx, int64_t cdim, int64_t dim, int64_t nnz) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_compressed_sparse_indices(is_crow, compressed_idx, plain_idx, cdim, dim, nnz);
  };
  dispatch__validate_compressed_sparse_indices(_r.toBool(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.toInt64(5));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cufft_get_plan_cache_size
static PyObject * THPVariable__cufft_get_plan_cache_size(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cufft_get_plan_cache_size(DeviceIndex device_index)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cufft_get_plan_cache_size(DeviceIndex device_index) -> int
  
  auto dispatch__cufft_get_plan_cache_size = [](at::DeviceIndex device_index) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return at::_cufft_get_plan_cache_size(device_index);
  };
  return wrap(dispatch__cufft_get_plan_cache_size(_r.toInt64(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cufft_get_plan_cache_max_size
static PyObject * THPVariable__cufft_get_plan_cache_max_size(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cufft_get_plan_cache_max_size(DeviceIndex device_index)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cufft_get_plan_cache_max_size(DeviceIndex device_index) -> int
  
  auto dispatch__cufft_get_plan_cache_max_size = [](at::DeviceIndex device_index) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return at::_cufft_get_plan_cache_max_size(device_index);
  };
  return wrap(dispatch__cufft_get_plan_cache_max_size(_r.toInt64(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cufft_set_plan_cache_max_size
static PyObject * THPVariable__cufft_set_plan_cache_max_size(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cufft_set_plan_cache_max_size(DeviceIndex device_index, int64_t max_size)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cufft_set_plan_cache_max_size(DeviceIndex device_index, int max_size) -> ()
  
  auto dispatch__cufft_set_plan_cache_max_size = [](at::DeviceIndex device_index, int64_t max_size) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_cufft_set_plan_cache_max_size(device_index, max_size);
  };
  dispatch__cufft_set_plan_cache_max_size(_r.toInt64(0), _r.toInt64(1));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cufft_clear_plan_cache
static PyObject * THPVariable__cufft_clear_plan_cache(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cufft_clear_plan_cache(DeviceIndex device_index)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cufft_clear_plan_cache(DeviceIndex device_index) -> ()
  
  auto dispatch__cufft_clear_plan_cache = [](at::DeviceIndex device_index) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_cufft_clear_plan_cache(device_index);
  };
  dispatch__cufft_clear_plan_cache(_r.toInt64(0));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unsafe_index
static PyObject * THPVariable__unsafe_index(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_unsafe_index(Tensor input, c10::List<::std::optional<Tensor>> indices)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unsafe_index.Tensor(Tensor self, Tensor?[] indices) -> Tensor
  
  auto dispatch__unsafe_index = [](const at::Tensor & self, const c10::List<::std::optional<at::Tensor>> & indices) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_unsafe_index(self, indices);
  };
  return wrap(dispatch__unsafe_index(_r.tensor(0), _r.list_of_optional_tensors(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unsafe_masked_index
static PyObject * THPVariable__unsafe_masked_index(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_unsafe_masked_index(Tensor input, Tensor mask, c10::List<::std::optional<Tensor>> indices, Scalar fill)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unsafe_masked_index(Tensor self, Tensor mask, Tensor?[] indices, Scalar fill) -> Tensor
  
  auto dispatch__unsafe_masked_index = [](const at::Tensor & self, const at::Tensor & mask, const c10::List<::std::optional<at::Tensor>> & indices, const at::Scalar & fill) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_unsafe_masked_index(self, mask, indices, fill);
  };
  return wrap(dispatch__unsafe_masked_index(_r.tensor(0), _r.tensor(1), _r.list_of_optional_tensors(2), _r.scalar(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unsafe_masked_index_put_accumulate
static PyObject * THPVariable__unsafe_masked_index_put_accumulate(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_unsafe_masked_index_put_accumulate(Tensor input, Tensor mask, c10::List<::std::optional<Tensor>> indices, Tensor values)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unsafe_masked_index_put_accumulate(Tensor self, Tensor mask, Tensor?[] indices, Tensor values) -> Tensor
  
  auto dispatch__unsafe_masked_index_put_accumulate = [](const at::Tensor & self, const at::Tensor & mask, const c10::List<::std::optional<at::Tensor>> & indices, const at::Tensor & values) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_unsafe_masked_index_put_accumulate(self, mask, indices, values);
  };
  return wrap(dispatch__unsafe_masked_index_put_accumulate(_r.tensor(0), _r.tensor(1), _r.list_of_optional_tensors(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// index_copy
static PyObject * THPVariable_index_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_copy(Tensor input, int64_t dim, Tensor index, Tensor source, *, Tensor out=None)",
    "index_copy(Tensor input, Dimname dim, Tensor index, Tensor source)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::index_copy(Tensor self, int dim, Tensor index, Tensor source) -> Tensor
        
        auto dispatch_index_copy = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & source) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.index_copy(dim, index, source);
        };
        return wrap(dispatch_index_copy(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // aten::index_copy.out(Tensor self, int dim, Tensor index, Tensor source, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_index_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & source) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::index_copy_out(out, self, dim, index, source);
        };
        return wrap(dispatch_index_copy_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 1: {
      // aten::index_copy.dimname(Tensor self, Dimname dim, Tensor index, Tensor source) -> Tensor
      
      auto dispatch_index_copy = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Tensor & source) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.index_copy(dim, index, source);
      };
      return wrap(dispatch_index_copy(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.tensor(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// index_put_
static PyObject * THPVariable_index_put_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_put_(Tensor input, c10::List<::std::optional<Tensor>> indices, Tensor values, bool accumulate=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::index_put_(Tensor(a!) self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor(a!)
  
  auto dispatch_index_put_ = [](at::Tensor self, const c10::List<::std::optional<at::Tensor>> & indices, const at::Tensor & values, bool accumulate) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.index_put_(indices, values, accumulate);
  };
  return wrap(dispatch_index_put_(_r.tensor(0), _r.list_of_optional_tensors(1), _r.tensor(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// index_put
static PyObject * THPVariable_index_put(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_put(Tensor input, c10::List<::std::optional<Tensor>> indices, Tensor values, bool accumulate=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::index_put(Tensor self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor
  
  auto dispatch_index_put = [](const at::Tensor & self, const c10::List<::std::optional<at::Tensor>> & indices, const at::Tensor & values, bool accumulate) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.index_put(indices, values, accumulate);
  };
  return wrap(dispatch_index_put(_r.tensor(0), _r.list_of_optional_tensors(1), _r.tensor(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unsafe_index_put
static PyObject * THPVariable__unsafe_index_put(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_unsafe_index_put(Tensor input, c10::List<::std::optional<Tensor>> indices, Tensor values, bool accumulate=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unsafe_index_put(Tensor self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor
  
  auto dispatch__unsafe_index_put = [](const at::Tensor & self, const c10::List<::std::optional<at::Tensor>> & indices, const at::Tensor & values, bool accumulate) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_unsafe_index_put(self, indices, values, accumulate);
  };
  return wrap(dispatch__unsafe_index_put(_r.tensor(0), _r.list_of_optional_tensors(1), _r.tensor(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _index_put_impl_
static PyObject * THPVariable__index_put_impl_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_index_put_impl_(Tensor input, c10::List<::std::optional<Tensor>> indices, Tensor values, bool accumulate=False, bool unsafe=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_index_put_impl_(Tensor(a!) self, Tensor?[] indices, Tensor values, bool accumulate=False, bool unsafe=False) -> Tensor(a!)
  
  auto dispatch__index_put_impl_ = [](at::Tensor self, const c10::List<::std::optional<at::Tensor>> & indices, const at::Tensor & values, bool accumulate, bool unsafe) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_index_put_impl_(self, indices, values, accumulate, unsafe);
  };
  return wrap(dispatch__index_put_impl_(_r.tensor(0), _r.list_of_optional_tensors(1), _r.tensor(2), _r.toBool(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// instance_norm
static PyObject * THPVariable_instance_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "instance_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool use_input_stats, double momentum, double eps, bool cudnn_enabled)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::instance_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool use_input_stats, float momentum, float eps, bool cudnn_enabled) -> Tensor
  
  auto dispatch_instance_norm = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool use_input_stats, double momentum, double eps, bool cudnn_enabled) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::instance_norm(input, weight, bias, running_mean, running_var, use_input_stats, momentum, eps, cudnn_enabled);
  };
  return wrap(dispatch_instance_norm(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isclose
static PyObject * THPVariable_isclose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isclose(Tensor input, Tensor other, double rtol=1e-05, double atol=1e-08, bool equal_nan=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::isclose(Tensor self, Tensor other, float rtol=1e-05, float atol=1e-08, bool equal_nan=False) -> Tensor
  
  auto dispatch_isclose = [](const at::Tensor & self, const at::Tensor & other, double rtol, double atol, bool equal_nan) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.isclose(other, rtol, atol, equal_nan);
  };
  return wrap(dispatch_isclose(_r.tensor(0), _r.tensor(1), _r.toDouble(2), _r.toDouble(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// isin
static PyObject * THPVariable_isin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isin(Tensor elements, Tensor test_elements, *, bool assume_unique=False, bool invert=False, Tensor out=None)",
    "isin(Scalar element, Tensor test_elements, *, bool assume_unique=False, bool invert=False, Tensor out=None)",
    "isin(Tensor elements, Scalar test_element, *, bool assume_unique=False, bool invert=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::isin.Tensor_Tensor(Tensor elements, Tensor test_elements, *, bool assume_unique=False, bool invert=False) -> Tensor
        
        auto dispatch_isin = [](const at::Tensor & elements, const at::Tensor & test_elements, bool assume_unique, bool invert) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::isin(elements, test_elements, assume_unique, invert);
        };
        return wrap(dispatch_isin(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::isin.Tensor_Tensor_out(Tensor elements, Tensor test_elements, *, bool assume_unique=False, bool invert=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_isin_out = [](at::Tensor out, const at::Tensor & elements, const at::Tensor & test_elements, bool assume_unique, bool invert) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::isin_out(out, elements, test_elements, assume_unique, invert);
        };
        return wrap(dispatch_isin_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::isin.Scalar_Tensor(Scalar element, Tensor test_elements, *, bool assume_unique=False, bool invert=False) -> Tensor
        
        auto dispatch_isin = [](const at::Scalar & element, const at::Tensor & test_elements, bool assume_unique, bool invert) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::isin(element, test_elements, assume_unique, invert);
        };
        return wrap(dispatch_isin(_r.scalar(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::isin.Scalar_Tensor_out(Scalar element, Tensor test_elements, *, bool assume_unique=False, bool invert=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_isin_out = [](at::Tensor out, const at::Scalar & element, const at::Tensor & test_elements, bool assume_unique, bool invert) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::isin_out(out, element, test_elements, assume_unique, invert);
        };
        return wrap(dispatch_isin_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::isin.Tensor_Scalar(Tensor elements, Scalar test_element, *, bool assume_unique=False, bool invert=False) -> Tensor
        
        auto dispatch_isin = [](const at::Tensor & elements, const at::Scalar & test_element, bool assume_unique, bool invert) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::isin(elements, test_element, assume_unique, invert);
        };
        return wrap(dispatch_isin(_r.tensor(0), _r.scalar(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::isin.Tensor_Scalar_out(Tensor elements, Scalar test_element, *, bool assume_unique=False, bool invert=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_isin_out = [](at::Tensor out, const at::Tensor & elements, const at::Scalar & test_element, bool assume_unique, bool invert) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::isin_out(out, elements, test_element, assume_unique, invert);
        };
        return wrap(dispatch_isin_out(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.toBool(2), _r.toBool(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isnan
static PyObject * THPVariable_isnan(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isnan(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::isnan(Tensor self) -> Tensor
  
  auto dispatch_isnan = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.isnan();
  };
  return wrap(dispatch_isnan(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_distributed
static PyObject * THPVariable_is_distributed(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_distributed(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_distributed(Tensor self) -> bool
  
  auto dispatch_is_distributed = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_distributed();
  };
  return wrap(dispatch_is_distributed(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_floating_point
static PyObject * THPVariable_is_floating_point(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_floating_point(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_floating_point(Tensor self) -> bool
  
  auto dispatch_is_floating_point = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_floating_point();
  };
  return wrap(dispatch_is_floating_point(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_complex
static PyObject * THPVariable_is_complex(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_complex(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_complex(Tensor self) -> bool
  
  auto dispatch_is_complex = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_complex();
  };
  return wrap(dispatch_is_complex(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_conj
static PyObject * THPVariable_is_conj(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_conj(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_conj(Tensor self) -> bool
  
  auto dispatch_is_conj = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_conj();
  };
  return wrap(dispatch_is_conj(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _is_zerotensor
static PyObject * THPVariable__is_zerotensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_is_zerotensor(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_is_zerotensor(Tensor self) -> bool
  
  auto dispatch__is_zerotensor = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self._is_zerotensor();
  };
  return wrap(dispatch__is_zerotensor(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_neg
static PyObject * THPVariable_is_neg(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_neg(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_neg(Tensor self) -> bool
  
  auto dispatch_is_neg = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_neg();
  };
  return wrap(dispatch_is_neg(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isreal
static PyObject * THPVariable_isreal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isreal(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::isreal(Tensor self) -> Tensor
  
  auto dispatch_isreal = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.isreal();
  };
  return wrap(dispatch_isreal(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_nonzero
static PyObject * THPVariable_is_nonzero(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_nonzero(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_nonzero(Tensor self) -> bool
  
  auto dispatch_is_nonzero = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_nonzero();
  };
  return wrap(dispatch_is_nonzero(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_same_size
static PyObject * THPVariable_is_same_size(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_same_size(Tensor input, Tensor other)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_same_size(Tensor self, Tensor other) -> bool
  
  auto dispatch_is_same_size = [](const at::Tensor & self, const at::Tensor & other) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_same_size(other);
  };
  return wrap(dispatch_is_same_size(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_signed
static PyObject * THPVariable_is_signed(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_signed(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_signed(Tensor self) -> bool
  
  auto dispatch_is_signed = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_signed();
  };
  return wrap(dispatch_is_signed(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_inference
static PyObject * THPVariable_is_inference(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "is_inference(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::is_inference(Tensor self) -> bool
  
  auto dispatch_is_inference = [](const at::Tensor & self) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.is_inference();
  };
  return wrap(dispatch_is_inference(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// kl_div
static PyObject * THPVariable_kl_div(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "kl_div(Tensor input, Tensor target, int64_t reduction=at::Reduction::Mean, *, bool log_target=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::kl_div(Tensor self, Tensor target, int reduction=Mean, *, bool log_target=False) -> Tensor
  
  auto dispatch_kl_div = [](const at::Tensor & self, const at::Tensor & target, int64_t reduction, bool log_target) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::kl_div(self, target, reduction, log_target);
  };
  return wrap(dispatch_kl_div(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// kron
static PyObject * THPVariable_kron(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "kron(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::kron(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_kron = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.kron(other);
    };
    return wrap(dispatch_kron(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::kron.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_kron_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::kron_out(out, self, other);
    };
    return wrap(dispatch_kron_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// kthvalue
static PyObject * THPVariable_kthvalue(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_kthvalue_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_kthvalue_out_structseq();
  static PythonArgParser parser({
    "kthvalue(Tensor input, int64_t k, int64_t dim=-1, bool keepdim=False, *, TensorList[2] out=None)",
    "kthvalue(Tensor input, int64_t k, Dimname dim, bool keepdim=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::kthvalue(Tensor self, int k, int dim=-1, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_kthvalue = [](const at::Tensor & self, int64_t k, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.kthvalue(k, dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_kthvalue(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toBool(3)));
      } else {
        // aten::kthvalue.values(Tensor self, int k, int dim=-1, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(4);
        auto dispatch_kthvalue_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t k, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::kthvalue_out(values, indices, self, k, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_kthvalue_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::kthvalue.dimname(Tensor self, int k, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_kthvalue = [](const at::Tensor & self, int64_t k, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.kthvalue(k, dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_kthvalue(_r.tensor(0), _r.toInt64(1), _r.dimname(2), _r.toBool(3)));
      } else {
        // aten::kthvalue.dimname_out(Tensor self, int k, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(4);
        auto dispatch_kthvalue_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t k, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::kthvalue_out(values, indices, self, k, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_kthvalue_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.dimname(2), _r.toBool(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// layer_norm
static PyObject * THPVariable_layer_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "layer_norm(Tensor input, SymIntArrayRef normalized_shape, Tensor? weight=None, Tensor? bias=None, double eps=1e-05, bool cudnn_enable=True)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::layer_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> Tensor
  
  auto dispatch_layer_norm = [](const at::Tensor & input, c10::SymIntArrayRef normalized_shape, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, double eps, bool cudnn_enable) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::layer_norm_symint(input, normalized_shape, weight, bias, eps, cudnn_enable);
  };
  return wrap(dispatch_layer_norm(_r.tensor(0), _r.symintlist(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.toDouble(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// native_layer_norm
static PyObject * THPVariable_native_layer_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "native_layer_norm(Tensor input, SymIntArrayRef normalized_shape, Tensor? weight, Tensor? bias, double eps)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::native_layer_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor)
  
  auto dispatch_native_layer_norm = [](const at::Tensor & input, c10::SymIntArrayRef normalized_shape, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::native_layer_norm_symint(input, normalized_shape, weight, bias, eps);
  };
  return wrap(dispatch_native_layer_norm(_r.tensor(0), _r.symintlist(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.toDouble(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rms_norm
static PyObject * THPVariable_rms_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rms_norm(Tensor input, SymIntArrayRef normalized_shape, Tensor? weight=None, double? eps=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rms_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight=None, float? eps=None) -> Tensor
  
  auto dispatch_rms_norm = [](const at::Tensor & input, c10::SymIntArrayRef normalized_shape, const ::std::optional<at::Tensor> & weight, ::std::optional<double> eps) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::rms_norm_symint(input, normalized_shape, weight, eps);
  };
  return wrap(dispatch_rms_norm(_r.tensor(0), _r.symintlist(1), _r.optionalTensor(2), _r.toDoubleOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// nan_to_num
static PyObject * THPVariable_nan_to_num(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nan_to_num(Tensor input, double? nan=None, double? posinf=None, double? neginf=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::nan_to_num(Tensor self, float? nan=None, float? posinf=None, float? neginf=None) -> Tensor
    
    auto dispatch_nan_to_num = [](const at::Tensor & self, ::std::optional<double> nan, ::std::optional<double> posinf, ::std::optional<double> neginf) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.nan_to_num(nan, posinf, neginf);
    };
    return wrap(dispatch_nan_to_num(_r.tensor(0), _r.toDoubleOptional(1), _r.toDoubleOptional(2), _r.toDoubleOptional(3)));
  } else {
    // aten::nan_to_num.out(Tensor self, float? nan=None, float? posinf=None, float? neginf=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_nan_to_num_out = [](at::Tensor out, const at::Tensor & self, ::std::optional<double> nan, ::std::optional<double> posinf, ::std::optional<double> neginf) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::nan_to_num_out(out, self, nan, posinf, neginf);
    };
    return wrap(dispatch_nan_to_num_out(_r.tensor(4), _r.tensor(0), _r.toDoubleOptional(1), _r.toDoubleOptional(2), _r.toDoubleOptional(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// nan_to_num_
static PyObject * THPVariable_nan_to_num_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nan_to_num_(Tensor input, double? nan=None, double? posinf=None, double? neginf=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::nan_to_num_(Tensor(a!) self, float? nan=None, float? posinf=None, float? neginf=None) -> Tensor(a!)
  
  auto dispatch_nan_to_num_ = [](at::Tensor self, ::std::optional<double> nan, ::std::optional<double> posinf, ::std::optional<double> neginf) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.nan_to_num_(nan, posinf, neginf);
  };
  return wrap(dispatch_nan_to_num_(_r.tensor(0), _r.toDoubleOptional(1), _r.toDoubleOptional(2), _r.toDoubleOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mkldnn_linear_backward_weights
static PyObject * THPVariable_mkldnn_linear_backward_weights(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mkldnn_linear_backward_weights(Tensor grad_output, Tensor input, Tensor weight, bool bias_defined)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::mkldnn_linear_backward_weights(Tensor grad_output, Tensor input, Tensor weight, bool bias_defined) -> (Tensor, Tensor)
  
  auto dispatch_mkldnn_linear_backward_weights = [](const at::Tensor & grad_output, const at::Tensor & input, const at::Tensor & weight, bool bias_defined) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::mkldnn_linear_backward_weights(grad_output, input, weight, bias_defined);
  };
  return wrap(dispatch_mkldnn_linear_backward_weights(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cslt_compress
static PyObject * THPVariable__cslt_compress(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cslt_compress(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cslt_compress(Tensor input) -> Tensor
  
  auto dispatch__cslt_compress = [](const at::Tensor & input) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cslt_compress(input);
  };
  return wrap(dispatch__cslt_compress(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cslt_sparse_mm
static PyObject * THPVariable__cslt_sparse_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cslt_sparse_mm(Tensor compressed_A, Tensor dense_B, Tensor? bias=None, Tensor? alpha=None, ScalarType? out_dtype=None, bool transpose_result=False, int64_t alg_id=0, int64_t split_k=1, bool split_k_one_kernel=True)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cslt_sparse_mm(Tensor compressed_A, Tensor dense_B, Tensor? bias=None, Tensor? alpha=None, ScalarType? out_dtype=None, bool transpose_result=False, int alg_id=0, int split_k=1, bool split_k_one_kernel=True) -> Tensor
  
  auto dispatch__cslt_sparse_mm = [](const at::Tensor & compressed_A, const at::Tensor & dense_B, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & alpha, ::std::optional<at::ScalarType> out_dtype, bool transpose_result, int64_t alg_id, int64_t split_k, bool split_k_one_kernel) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_cslt_sparse_mm(compressed_A, dense_B, bias, alpha, out_dtype, transpose_result, alg_id, split_k, split_k_one_kernel);
  };
  return wrap(dispatch__cslt_sparse_mm(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.scalartypeOptional(4), _r.toBool(5), _r.toInt64(6), _r.toInt64(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _cslt_sparse_mm_search
static PyObject * THPVariable__cslt_sparse_mm_search(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_cslt_sparse_mm_search(Tensor compressed_A, Tensor dense_B, Tensor? bias=None, Tensor? alpha=None, ScalarType? out_dtype=None, bool transpose_result=False)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_cslt_sparse_mm_search(Tensor compressed_A, Tensor dense_B, Tensor? bias=None, Tensor? alpha=None, ScalarType? out_dtype=None, bool transpose_result=False) -> int
  
  auto dispatch__cslt_sparse_mm_search = [](const at::Tensor & compressed_A, const at::Tensor & dense_B, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & alpha, ::std::optional<at::ScalarType> out_dtype, bool transpose_result) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return at::_cslt_sparse_mm_search(compressed_A, dense_B, bias, alpha, out_dtype, transpose_result);
  };
  return wrap(dispatch__cslt_sparse_mm_search(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.scalartypeOptional(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_semi_structured_tile
static PyObject * THPVariable__sparse_semi_structured_tile(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_semi_structured_tile(Tensor input, c10::string_view algorithm=\"\", bool use_cutlass=True)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_semi_structured_tile(Tensor input, str algorithm="", bool use_cutlass=True) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch__sparse_semi_structured_tile = [](const at::Tensor & input, c10::string_view algorithm, bool use_cutlass) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_semi_structured_tile(input, algorithm, use_cutlass);
  };
  return wrap(dispatch__sparse_semi_structured_tile(_r.tensor(0), _r.stringView(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_semi_structured_apply
static PyObject * THPVariable__sparse_semi_structured_apply(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_semi_structured_apply(Tensor input, Tensor thread_masks)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_semi_structured_apply(Tensor input, Tensor thread_masks) -> (Tensor, Tensor)
  
  auto dispatch__sparse_semi_structured_apply = [](const at::Tensor & input, const at::Tensor & thread_masks) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_semi_structured_apply(input, thread_masks);
  };
  return wrap(dispatch__sparse_semi_structured_apply(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_semi_structured_apply_dense
static PyObject * THPVariable__sparse_semi_structured_apply_dense(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_semi_structured_apply_dense(Tensor input, Tensor thread_masks)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_semi_structured_apply_dense(Tensor input, Tensor thread_masks) -> Tensor
  
  auto dispatch__sparse_semi_structured_apply_dense = [](const at::Tensor & input, const at::Tensor & thread_masks) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_semi_structured_apply_dense(input, thread_masks);
  };
  return wrap(dispatch__sparse_semi_structured_apply_dense(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_semi_structured_linear
static PyObject * THPVariable__sparse_semi_structured_linear(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_semi_structured_linear(Tensor input, Tensor weight, Tensor meta, *, Tensor? bias=None, c10::string_view? activation=None, ScalarType? out_dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_semi_structured_linear(Tensor input, Tensor weight, Tensor meta, *, Tensor? bias=None, str? activation=None, ScalarType? out_dtype=None) -> Tensor
  
  auto dispatch__sparse_semi_structured_linear = [](const at::Tensor & input, const at::Tensor & weight, const at::Tensor & meta, const ::std::optional<at::Tensor> & bias, ::std::optional<c10::string_view> activation, ::std::optional<at::ScalarType> out_dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_semi_structured_linear(input, weight, meta, bias, activation, out_dtype);
  };
  return wrap(dispatch__sparse_semi_structured_linear(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.stringViewOptional(4), _r.scalartypeOptional(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_semi_structured_mm
static PyObject * THPVariable__sparse_semi_structured_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_semi_structured_mm(Tensor mat1, Tensor mat1_meta, Tensor mat2, *, ScalarType? out_dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_semi_structured_mm(Tensor mat1, Tensor mat1_meta, Tensor mat2, *, ScalarType? out_dtype=None) -> Tensor
  
  auto dispatch__sparse_semi_structured_mm = [](const at::Tensor & mat1, const at::Tensor & mat1_meta, const at::Tensor & mat2, ::std::optional<at::ScalarType> out_dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_semi_structured_mm(mat1, mat1_meta, mat2, out_dtype);
  };
  return wrap(dispatch__sparse_semi_structured_mm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalartypeOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_semi_structured_addmm
static PyObject * THPVariable__sparse_semi_structured_addmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_semi_structured_addmm(Tensor input, Tensor mat1, Tensor mat1_meta, Tensor mat2, *, Scalar alpha=1, Scalar beta=1, ScalarType? out_dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_semi_structured_addmm(Tensor input, Tensor mat1, Tensor mat1_meta, Tensor mat2, *, Scalar alpha=1, Scalar beta=1, ScalarType? out_dtype=None) -> Tensor
  
  auto dispatch__sparse_semi_structured_addmm = [](const at::Tensor & input, const at::Tensor & mat1, const at::Tensor & mat1_meta, const at::Tensor & mat2, const at::Scalar & alpha, const at::Scalar & beta, ::std::optional<at::ScalarType> out_dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_semi_structured_addmm(input, mat1, mat1_meta, mat2, alpha, beta, out_dtype);
  };
  return wrap(dispatch__sparse_semi_structured_addmm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.scalar(4), _r.scalar(5), _r.scalartypeOptional(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _mixed_dtypes_linear
static PyObject * THPVariable__mixed_dtypes_linear(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_mixed_dtypes_linear(Tensor input, Tensor weight, Tensor scale, *, Tensor? bias=None, c10::string_view? activation=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_mixed_dtypes_linear(Tensor input, Tensor weight, Tensor scale, *, Tensor? bias=None, str? activation=None) -> Tensor
  
  auto dispatch__mixed_dtypes_linear = [](const at::Tensor & input, const at::Tensor & weight, const at::Tensor & scale, const ::std::optional<at::Tensor> & bias, ::std::optional<c10::string_view> activation) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_mixed_dtypes_linear(input, weight, scale, bias, activation);
  };
  return wrap(dispatch__mixed_dtypes_linear(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.stringViewOptional(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fbgemm_linear_int8_weight_fp32_activation
static PyObject * THPVariable_fbgemm_linear_int8_weight_fp32_activation(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_linear_int8_weight_fp32_activation(Tensor input, Tensor weight, Tensor packed, Tensor col_offsets, Scalar weight_scale, Scalar weight_zero_point, Tensor bias)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fbgemm_linear_int8_weight_fp32_activation(Tensor input, Tensor weight, Tensor packed, Tensor col_offsets, Scalar weight_scale, Scalar weight_zero_point, Tensor bias) -> Tensor
  
  auto dispatch_fbgemm_linear_int8_weight_fp32_activation = [](const at::Tensor & input, const at::Tensor & weight, const at::Tensor & packed, const at::Tensor & col_offsets, const at::Scalar & weight_scale, const at::Scalar & weight_zero_point, const at::Tensor & bias) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fbgemm_linear_int8_weight_fp32_activation(input, weight, packed, col_offsets, weight_scale, weight_zero_point, bias);
  };
  return wrap(dispatch_fbgemm_linear_int8_weight_fp32_activation(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.scalar(4), _r.scalar(5), _r.tensor(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fbgemm_linear_int8_weight
static PyObject * THPVariable_fbgemm_linear_int8_weight(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_linear_int8_weight(Tensor input, Tensor weight, Tensor packed, Tensor col_offsets, Scalar weight_scale, Scalar weight_zero_point, Tensor bias)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fbgemm_linear_int8_weight(Tensor input, Tensor weight, Tensor packed, Tensor col_offsets, Scalar weight_scale, Scalar weight_zero_point, Tensor bias) -> Tensor
  
  auto dispatch_fbgemm_linear_int8_weight = [](const at::Tensor & input, const at::Tensor & weight, const at::Tensor & packed, const at::Tensor & col_offsets, const at::Scalar & weight_scale, const at::Scalar & weight_zero_point, const at::Tensor & bias) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fbgemm_linear_int8_weight(input, weight, packed, col_offsets, weight_scale, weight_zero_point, bias);
  };
  return wrap(dispatch_fbgemm_linear_int8_weight(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.scalar(4), _r.scalar(5), _r.tensor(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fbgemm_linear_quantize_weight
static PyObject * THPVariable_fbgemm_linear_quantize_weight(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_linear_quantize_weight(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fbgemm_linear_quantize_weight(Tensor input) -> (Tensor, Tensor, float, int)
  
  auto dispatch_fbgemm_linear_quantize_weight = [](const at::Tensor & input) -> ::std::tuple<at::Tensor,at::Tensor,double,int64_t> {
    pybind11::gil_scoped_release no_gil;
    return at::fbgemm_linear_quantize_weight(input);
  };
  return wrap(dispatch_fbgemm_linear_quantize_weight(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fbgemm_pack_gemm_matrix_fp16
static PyObject * THPVariable_fbgemm_pack_gemm_matrix_fp16(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_pack_gemm_matrix_fp16(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fbgemm_pack_gemm_matrix_fp16(Tensor input) -> Tensor
  
  auto dispatch_fbgemm_pack_gemm_matrix_fp16 = [](const at::Tensor & input) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fbgemm_pack_gemm_matrix_fp16(input);
  };
  return wrap(dispatch_fbgemm_pack_gemm_matrix_fp16(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _wrapped_linear_prepack
static PyObject * THPVariable__wrapped_linear_prepack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_wrapped_linear_prepack(Tensor weight, Tensor weight_scale, Tensor weight_zero_point, Tensor bias)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_wrapped_linear_prepack(Tensor weight, Tensor weight_scale, Tensor weight_zero_point, Tensor bias) -> Tensor
  
  auto dispatch__wrapped_linear_prepack = [](const at::Tensor & weight, const at::Tensor & weight_scale, const at::Tensor & weight_zero_point, const at::Tensor & bias) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_wrapped_linear_prepack(weight, weight_scale, weight_zero_point, bias);
  };
  return wrap(dispatch__wrapped_linear_prepack(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _wrapped_quantized_linear_prepacked
static PyObject * THPVariable__wrapped_quantized_linear_prepacked(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_wrapped_quantized_linear_prepacked(Tensor input, Tensor input_scale, Tensor input_zero_point, Tensor packed_weight, Tensor output_scale, Tensor output_zero_point, int64_t out_channel)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_wrapped_quantized_linear_prepacked(Tensor input, Tensor input_scale, Tensor input_zero_point, Tensor packed_weight, Tensor output_scale, Tensor output_zero_point, int out_channel) -> Tensor
  
  auto dispatch__wrapped_quantized_linear_prepacked = [](const at::Tensor & input, const at::Tensor & input_scale, const at::Tensor & input_zero_point, const at::Tensor & packed_weight, const at::Tensor & output_scale, const at::Tensor & output_zero_point, int64_t out_channel) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_wrapped_quantized_linear_prepacked(input, input_scale, input_zero_point, packed_weight, output_scale, output_zero_point, out_channel);
  };
  return wrap(dispatch__wrapped_quantized_linear_prepacked(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.toInt64(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fbgemm_linear_fp16_weight_fp32_activation
static PyObject * THPVariable_fbgemm_linear_fp16_weight_fp32_activation(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_linear_fp16_weight_fp32_activation(Tensor input, Tensor packed_weight, Tensor bias)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fbgemm_linear_fp16_weight_fp32_activation(Tensor input, Tensor packed_weight, Tensor bias) -> Tensor
  
  auto dispatch_fbgemm_linear_fp16_weight_fp32_activation = [](const at::Tensor & input, const at::Tensor & packed_weight, const at::Tensor & bias) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fbgemm_linear_fp16_weight_fp32_activation(input, packed_weight, bias);
  };
  return wrap(dispatch_fbgemm_linear_fp16_weight_fp32_activation(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fbgemm_linear_fp16_weight
static PyObject * THPVariable_fbgemm_linear_fp16_weight(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_linear_fp16_weight(Tensor input, Tensor packed_weight, Tensor bias)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fbgemm_linear_fp16_weight(Tensor input, Tensor packed_weight, Tensor bias) -> Tensor
  
  auto dispatch_fbgemm_linear_fp16_weight = [](const at::Tensor & input, const at::Tensor & packed_weight, const at::Tensor & bias) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fbgemm_linear_fp16_weight(input, packed_weight, bias);
  };
  return wrap(dispatch_fbgemm_linear_fp16_weight(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// fbgemm_pack_quantized_matrix
static PyObject * THPVariable_fbgemm_pack_quantized_matrix(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fbgemm_pack_quantized_matrix(Tensor input)",
    "fbgemm_pack_quantized_matrix(Tensor input, int64_t K, int64_t N)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::fbgemm_pack_quantized_matrix(Tensor input) -> Tensor
      
      auto dispatch_fbgemm_pack_quantized_matrix = [](const at::Tensor & input) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::fbgemm_pack_quantized_matrix(input);
      };
      return wrap(dispatch_fbgemm_pack_quantized_matrix(_r.tensor(0)));
    }
    case 1: {
      // aten::fbgemm_pack_quantized_matrix.KN(Tensor input, int K, int N) -> Tensor
      
      auto dispatch_fbgemm_pack_quantized_matrix = [](const at::Tensor & input, int64_t K, int64_t N) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::fbgemm_pack_quantized_matrix(input, K, N);
      };
      return wrap(dispatch_fbgemm_pack_quantized_matrix(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ldexp
static PyObject * THPVariable_ldexp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ldexp(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::ldexp.Tensor(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_ldexp = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.ldexp(other);
    };
    return wrap(dispatch_ldexp(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::ldexp.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_ldexp_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::ldexp_out(out, self, other);
    };
    return wrap(dispatch_ldexp_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ldexp_
static PyObject * THPVariable_ldexp_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ldexp_(Tensor input, Tensor other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::ldexp_(Tensor(a!) self, Tensor other) -> Tensor(a!)
  
  auto dispatch_ldexp_ = [](at::Tensor self, const at::Tensor & other) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.ldexp_(other);
  };
  return wrap(dispatch_ldexp_(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// linspace
static PyObject * THPVariable_linspace(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "linspace(Tensor start, Tensor end, int64_t steps, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "linspace(Scalar start, Tensor end, int64_t steps, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "linspace(Tensor start, Scalar end, int64_t steps, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "linspace(Scalar start, Scalar end, int64_t steps, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::linspace.Tensor_Tensor(Tensor start, Tensor end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(4))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_linspace = [](const at::Tensor & start, const at::Tensor & end, int64_t steps, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::linspace(start, end, steps, options);
        };
        return wrap(dispatch_linspace(_r.tensor(0), _r.tensor(1), _r.toInt64(2), options));
      } else {
        // aten::linspace.Tensor_Tensor_out(Tensor start, Tensor end, int steps, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeOptional(4),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_linspace_out = [](at::Tensor out, const at::Tensor & start, const at::Tensor & end, int64_t steps) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::linspace_out(out, start, end, steps);
        };
        return wrap(dispatch_linspace_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.toInt64(2)).set_requires_grad(_r.toBool(8)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::linspace.Scalar_Tensor(Scalar start, Tensor end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(4))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_linspace = [](const at::Scalar & start, const at::Tensor & end, int64_t steps, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::linspace(start, end, steps, options);
        };
        return wrap(dispatch_linspace(_r.scalar(0), _r.tensor(1), _r.toInt64(2), options));
      } else {
        // aten::linspace.Scalar_Tensor_out(Scalar start, Tensor end, int steps, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeOptional(4),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_linspace_out = [](at::Tensor out, const at::Scalar & start, const at::Tensor & end, int64_t steps) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::linspace_out(out, start, end, steps);
        };
        return wrap(dispatch_linspace_out(_r.tensor(3), _r.scalar(0), _r.tensor(1), _r.toInt64(2)).set_requires_grad(_r.toBool(8)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::linspace.Tensor_Scalar(Tensor start, Scalar end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(4))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_linspace = [](const at::Tensor & start, const at::Scalar & end, int64_t steps, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::linspace(start, end, steps, options);
        };
        return wrap(dispatch_linspace(_r.tensor(0), _r.scalar(1), _r.toInt64(2), options));
      } else {
        // aten::linspace.Tensor_Scalar_out(Tensor start, Scalar end, int steps, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeOptional(4),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_linspace_out = [](at::Tensor out, const at::Tensor & start, const at::Scalar & end, int64_t steps) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::linspace_out(out, start, end, steps);
        };
        return wrap(dispatch_linspace_out(_r.tensor(3), _r.tensor(0), _r.scalar(1), _r.toInt64(2)).set_requires_grad(_r.toBool(8)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::linspace(Scalar start, Scalar end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(4))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_linspace = [](const at::Scalar & start, const at::Scalar & end, int64_t steps, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::linspace(start, end, steps, options);
        };
        return wrap(dispatch_linspace(_r.scalar(0), _r.scalar(1), _r.toInt64(2), options));
      } else {
        // aten::linspace.out(Scalar start, Scalar end, int steps, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeOptional(4),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_linspace_out = [](at::Tensor out, const at::Scalar & start, const at::Scalar & end, int64_t steps) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::linspace_out(out, start, end, steps);
        };
        return wrap(dispatch_linspace_out(_r.tensor(3), _r.scalar(0), _r.scalar(1), _r.toInt64(2)).set_requires_grad(_r.toBool(8)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log
static PyObject * THPVariable_log(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::log(Tensor self) -> Tensor
    
    auto dispatch_log = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.log();
    };
    return wrap(dispatch_log(_r.tensor(0)));
  } else {
    // aten::log.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_log_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::log_out(out, self);
    };
    return wrap(dispatch_log_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log_
static PyObject * THPVariable_log_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::log_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_log_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.log_();
  };
  return wrap(dispatch_log_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log10
static PyObject * THPVariable_log10(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log10(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::log10(Tensor self) -> Tensor
    
    auto dispatch_log10 = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.log10();
    };
    return wrap(dispatch_log10(_r.tensor(0)));
  } else {
    // aten::log10.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_log10_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::log10_out(out, self);
    };
    return wrap(dispatch_log10_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log10_
static PyObject * THPVariable_log10_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log10_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::log10_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_log10_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.log10_();
  };
  return wrap(dispatch_log10_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log1p
static PyObject * THPVariable_log1p(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log1p(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::log1p(Tensor self) -> Tensor
    
    auto dispatch_log1p = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.log1p();
    };
    return wrap(dispatch_log1p(_r.tensor(0)));
  } else {
    // aten::log1p.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_log1p_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::log1p_out(out, self);
    };
    return wrap(dispatch_log1p_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log1p_
static PyObject * THPVariable_log1p_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log1p_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::log1p_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_log1p_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.log1p_();
  };
  return wrap(dispatch_log1p_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log2
static PyObject * THPVariable_log2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log2(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::log2(Tensor self) -> Tensor
    
    auto dispatch_log2 = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.log2();
    };
    return wrap(dispatch_log2(_r.tensor(0)));
  } else {
    // aten::log2.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_log2_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::log2_out(out, self);
    };
    return wrap(dispatch_log2_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// log2_
static PyObject * THPVariable_log2_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log2_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::log2_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_log2_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.log2_();
  };
  return wrap(dispatch_log2_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logaddexp
static PyObject * THPVariable_logaddexp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logaddexp(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::logaddexp(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_logaddexp = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logaddexp(other);
    };
    return wrap(dispatch_logaddexp(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::logaddexp.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logaddexp_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logaddexp_out(out, self, other);
    };
    return wrap(dispatch_logaddexp_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logaddexp2
static PyObject * THPVariable_logaddexp2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logaddexp2(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::logaddexp2(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_logaddexp2 = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logaddexp2(other);
    };
    return wrap(dispatch_logaddexp2(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::logaddexp2.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logaddexp2_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logaddexp2_out(out, self, other);
    };
    return wrap(dispatch_logaddexp2_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// xlogy
static PyObject * THPVariable_xlogy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "xlogy(Tensor input, Tensor other, *, Tensor out=None)",
    "xlogy(Scalar self, Tensor other, *, Tensor out=None)",
    "xlogy(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::xlogy.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_xlogy = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.xlogy(other);
        };
        return wrap(dispatch_xlogy(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::xlogy.OutTensor(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_xlogy_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::xlogy_out(out, self, other);
        };
        return wrap(dispatch_xlogy_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::xlogy.Scalar_Self(Scalar self, Tensor other) -> Tensor
        
        auto dispatch_xlogy = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::xlogy(self, other);
        };
        return wrap(dispatch_xlogy(_r.scalar(0), _r.tensor(1)));
      } else {
        // aten::xlogy.OutScalar_Self(Scalar self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_xlogy_out = [](at::Tensor out, const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::xlogy_out(out, self, other);
        };
        return wrap(dispatch_xlogy_out(_r.tensor(2), _r.scalar(0), _r.tensor(1)));
      }
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::xlogy.Scalar_Other(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_xlogy = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.xlogy(other);
        };
        return wrap(dispatch_xlogy(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::xlogy.OutScalar_Other(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_xlogy_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::xlogy_out(out, self, other);
        };
        return wrap(dispatch_xlogy_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// xlogy_
static PyObject * THPVariable_xlogy_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "xlogy_(Tensor input, Tensor other)",
    "xlogy_(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::xlogy_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!)
      
      auto dispatch_xlogy_ = [](at::Tensor self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.xlogy_(other);
      };
      return wrap(dispatch_xlogy_(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::xlogy_.Scalar_Other(Tensor(a!) self, Scalar other) -> Tensor(a!)
      
      auto dispatch_xlogy_ = [](at::Tensor self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.xlogy_(other);
      };
      return wrap(dispatch_xlogy_(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// logspace
static PyObject * THPVariable_logspace(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logspace(Tensor start, Tensor end, int64_t steps, double base=10.0, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "logspace(Scalar start, Tensor end, int64_t steps, double base=10.0, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "logspace(Tensor start, Scalar end, int64_t steps, double base=10.0, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "logspace(Scalar start, Scalar end, int64_t steps, double base=10.0, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::logspace.Tensor_Tensor(Tensor start, Tensor end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(5))
            .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(6))
            .requires_grad(_r.toBool(9))
            .pinned_memory(_r.toBool(8));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_logspace = [](const at::Tensor & start, const at::Tensor & end, int64_t steps, double base, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::logspace(start, end, steps, base, options);
        };
        return wrap(dispatch_logspace(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toDouble(3), options));
      } else {
        // aten::logspace.Tensor_Tensor_out(Tensor start, Tensor end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(4), _r.scalartypeOptional(5),
                               _r.isNone(5), _r.layoutOptional(6),
                               _r.deviceWithDefault(7, torch::tensors::get_default_device()), _r.isNone(7));
        
        auto dispatch_logspace_out = [](at::Tensor out, const at::Tensor & start, const at::Tensor & end, int64_t steps, double base) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logspace_out(out, start, end, steps, base);
        };
        return wrap(dispatch_logspace_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toDouble(3)).set_requires_grad(_r.toBool(9)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::logspace.Scalar_Tensor(Scalar start, Tensor end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(5))
            .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(6))
            .requires_grad(_r.toBool(9))
            .pinned_memory(_r.toBool(8));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_logspace = [](const at::Scalar & start, const at::Tensor & end, int64_t steps, double base, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::logspace(start, end, steps, base, options);
        };
        return wrap(dispatch_logspace(_r.scalar(0), _r.tensor(1), _r.toInt64(2), _r.toDouble(3), options));
      } else {
        // aten::logspace.Scalar_Tensor_out(Scalar start, Tensor end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(4), _r.scalartypeOptional(5),
                               _r.isNone(5), _r.layoutOptional(6),
                               _r.deviceWithDefault(7, torch::tensors::get_default_device()), _r.isNone(7));
        
        auto dispatch_logspace_out = [](at::Tensor out, const at::Scalar & start, const at::Tensor & end, int64_t steps, double base) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logspace_out(out, start, end, steps, base);
        };
        return wrap(dispatch_logspace_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.toInt64(2), _r.toDouble(3)).set_requires_grad(_r.toBool(9)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::logspace.Tensor_Scalar(Tensor start, Scalar end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(5))
            .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(6))
            .requires_grad(_r.toBool(9))
            .pinned_memory(_r.toBool(8));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_logspace = [](const at::Tensor & start, const at::Scalar & end, int64_t steps, double base, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::logspace(start, end, steps, base, options);
        };
        return wrap(dispatch_logspace(_r.tensor(0), _r.scalar(1), _r.toInt64(2), _r.toDouble(3), options));
      } else {
        // aten::logspace.Tensor_Scalar_out(Tensor start, Scalar end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(4), _r.scalartypeOptional(5),
                               _r.isNone(5), _r.layoutOptional(6),
                               _r.deviceWithDefault(7, torch::tensors::get_default_device()), _r.isNone(7));
        
        auto dispatch_logspace_out = [](at::Tensor out, const at::Tensor & start, const at::Scalar & end, int64_t steps, double base) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logspace_out(out, start, end, steps, base);
        };
        return wrap(dispatch_logspace_out(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.toInt64(2), _r.toDouble(3)).set_requires_grad(_r.toBool(9)));
      }
    }
    case 3: {
      if (_r.isNone(4)) {
        // aten::logspace(Scalar start, Scalar end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(5))
            .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(6))
            .requires_grad(_r.toBool(9))
            .pinned_memory(_r.toBool(8));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_logspace = [](const at::Scalar & start, const at::Scalar & end, int64_t steps, double base, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::logspace(start, end, steps, base, options);
        };
        return wrap(dispatch_logspace(_r.scalar(0), _r.scalar(1), _r.toInt64(2), _r.toDouble(3), options));
      } else {
        // aten::logspace.out(Scalar start, Scalar end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(4), _r.scalartypeOptional(5),
                               _r.isNone(5), _r.layoutOptional(6),
                               _r.deviceWithDefault(7, torch::tensors::get_default_device()), _r.isNone(7));
        
        auto dispatch_logspace_out = [](at::Tensor out, const at::Scalar & start, const at::Scalar & end, int64_t steps, double base) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logspace_out(out, start, end, steps, base);
        };
        return wrap(dispatch_logspace_out(_r.tensor(4), _r.scalar(0), _r.scalar(1), _r.toInt64(2), _r.toDouble(3)).set_requires_grad(_r.toBool(9)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// log_softmax
static PyObject * THPVariable_log_softmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "log_softmax(Tensor input, int64_t dim, ScalarType? dtype=None, *, Tensor out=None)",
    "log_softmax(Tensor input, Dimname dim, *, ScalarType? dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::log_softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_log_softmax = [](const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.log_softmax(dim, dtype);
        };
        return wrap(dispatch_log_softmax(_r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      } else {
        // aten::log_softmax.int_out(Tensor self, int dim, ScalarType? dtype=None, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_log_softmax_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::log_softmax_out(out, self, dim, dtype);
        };
        return wrap(dispatch_log_softmax_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      }
    }
    case 1: {
      // aten::log_softmax.Dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor
      
      auto dispatch_log_softmax = [](const at::Tensor & self, at::Dimname dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.log_softmax(dim, dtype);
      };
      return wrap(dispatch_log_softmax(_r.tensor(0), _r.dimname(1), _r.scalartypeOptional(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _log_softmax
static PyObject * THPVariable__log_softmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_log_softmax(Tensor input, int64_t dim, bool half_to_float, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_log_softmax(Tensor self, int dim, bool half_to_float) -> Tensor
    
    auto dispatch__log_softmax = [](const at::Tensor & self, int64_t dim, bool half_to_float) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_log_softmax(self, dim, half_to_float);
    };
    return wrap(dispatch__log_softmax(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  } else {
    // aten::_log_softmax.out(Tensor self, int dim, bool half_to_float, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__log_softmax_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, bool half_to_float) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_log_softmax_out(out, self, dim, half_to_float);
    };
    return wrap(dispatch__log_softmax_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _log_softmax_backward_data
static PyObject * THPVariable__log_softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_log_softmax_backward_data(Tensor grad_output, Tensor output, int64_t dim, ScalarType input_dtype, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_log_softmax_backward_data(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype) -> Tensor
    
    auto dispatch__log_softmax_backward_data = [](const at::Tensor & grad_output, const at::Tensor & output, int64_t dim, at::ScalarType input_dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_log_softmax_backward_data(grad_output, output, dim, input_dtype);
    };
    return wrap(dispatch__log_softmax_backward_data(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.scalartype(3)));
  } else {
    // aten::_log_softmax_backward_data.out(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__log_softmax_backward_data_out = [](at::Tensor out, const at::Tensor & grad_output, const at::Tensor & output, int64_t dim, at::ScalarType input_dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_log_softmax_backward_data_out(out, grad_output, output, dim, input_dtype);
    };
    return wrap(dispatch__log_softmax_backward_data_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.scalartype(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _logcumsumexp
static PyObject * THPVariable__logcumsumexp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_logcumsumexp(Tensor input, int64_t dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::_logcumsumexp(Tensor self, int dim) -> Tensor
    
    auto dispatch__logcumsumexp = [](const at::Tensor & self, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_logcumsumexp(self, dim);
    };
    return wrap(dispatch__logcumsumexp(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::_logcumsumexp.out(Tensor self, int dim, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__logcumsumexp_out = [](at::Tensor out, const at::Tensor & self, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_logcumsumexp_out(out, self, dim);
    };
    return wrap(dispatch__logcumsumexp_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// logcumsumexp
static PyObject * THPVariable_logcumsumexp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logcumsumexp(Tensor input, int64_t dim, *, Tensor out=None)",
    "logcumsumexp(Tensor input, Dimname dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::logcumsumexp(Tensor self, int dim) -> Tensor
        
        auto dispatch_logcumsumexp = [](const at::Tensor & self, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.logcumsumexp(dim);
        };
        return wrap(dispatch_logcumsumexp(_r.tensor(0), _r.toInt64(1)));
      } else {
        // aten::logcumsumexp.out(Tensor self, int dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_logcumsumexp_out = [](at::Tensor out, const at::Tensor & self, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logcumsumexp_out(out, self, dim);
        };
        return wrap(dispatch_logcumsumexp_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::logcumsumexp.dimname(Tensor self, Dimname dim) -> Tensor
        
        auto dispatch_logcumsumexp = [](const at::Tensor & self, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.logcumsumexp(dim);
        };
        return wrap(dispatch_logcumsumexp(_r.tensor(0), _r.dimname(1)));
      } else {
        // aten::logcumsumexp.dimname_out(Tensor self, Dimname dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_logcumsumexp_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logcumsumexp_out(out, self, dim);
        };
        return wrap(dispatch_logcumsumexp_out(_r.tensor(2), _r.tensor(0), _r.dimname(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// logsumexp
static PyObject * THPVariable_logsumexp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logsumexp(Tensor input, IntArrayRef[1] dim, bool keepdim=False, *, Tensor out=None)",
    "logsumexp(Tensor input, DimnameList[1] dim, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::logsumexp(Tensor self, int[1] dim, bool keepdim=False) -> Tensor
        
        auto dispatch_logsumexp = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.logsumexp(dim, keepdim);
        };
        return wrap(dispatch_logsumexp(_r.tensor(0), _r.intlist(1), _r.toBool(2)));
      } else {
        // aten::logsumexp.out(Tensor self, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_logsumexp_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logsumexp_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_logsumexp_out(_r.tensor(3), _r.tensor(0), _r.intlist(1), _r.toBool(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::logsumexp.names(Tensor self, Dimname[1] dim, bool keepdim=False) -> Tensor
        
        auto dispatch_logsumexp = [](const at::Tensor & self, at::DimnameList dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.logsumexp(dim, keepdim);
        };
        return wrap(dispatch_logsumexp(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2)));
      } else {
        // aten::logsumexp.names_out(Tensor self, Dimname[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_logsumexp_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::logsumexp_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_logsumexp_out(_r.tensor(3), _r.tensor(0), _r.dimnamelist(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// margin_ranking_loss
static PyObject * THPVariable_margin_ranking_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "margin_ranking_loss(Tensor input1, Tensor input2, Tensor target, double margin=0.0, int64_t reduction=at::Reduction::Mean)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::margin_ranking_loss(Tensor input1, Tensor input2, Tensor target, float margin=0.0, int reduction=Mean) -> Tensor
  
  auto dispatch_margin_ranking_loss = [](const at::Tensor & input1, const at::Tensor & input2, const at::Tensor & target, double margin, int64_t reduction) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::margin_ranking_loss(input1, input2, target, margin, reduction);
  };
  return wrap(dispatch_margin_ranking_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// matmul
static PyObject * THPVariable_matmul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "matmul(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::matmul(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_matmul = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.matmul(other);
    };
    return wrap(dispatch_matmul(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::matmul.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_matmul_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::matmul_out(out, self, other);
    };
    return wrap(dispatch_matmul_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// matrix_power
static PyObject * THPVariable_matrix_power(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "matrix_power(Tensor input, int64_t n, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::matrix_power(Tensor self, int n) -> Tensor
    
    auto dispatch_matrix_power = [](const at::Tensor & self, int64_t n) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.matrix_power(n);
    };
    return wrap(dispatch_matrix_power(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::matrix_power.out(Tensor self, int n, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_matrix_power_out = [](at::Tensor out, const at::Tensor & self, int64_t n) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::matrix_power_out(out, self, n);
    };
    return wrap(dispatch_matrix_power_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// matrix_exp
static PyObject * THPVariable_matrix_exp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "matrix_exp(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::matrix_exp(Tensor self) -> Tensor
  
  auto dispatch_matrix_exp = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.matrix_exp();
  };
  return wrap(dispatch_matrix_exp(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _aminmax
static PyObject * THPVariable__aminmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_aminmax(Tensor input)",
    "_aminmax(Tensor input, int64_t dim, bool keepdim=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_aminmax(Tensor self) -> (Tensor, Tensor)
      
      auto dispatch__aminmax = [](const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_aminmax(self);
      };
      return wrap(dispatch__aminmax(_r.tensor(0)));
    }
    case 1: {
      // aten::_aminmax.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch__aminmax = [](const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_aminmax(self, dim, keepdim);
      };
      return wrap(dispatch__aminmax(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// aminmax
static PyObject * THPVariable_aminmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_aminmax_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_aminmax_out_structseq();
  static PythonArgParser parser({
    "aminmax(Tensor input, *, int64_t? dim=None, bool keepdim=False, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::aminmax(Tensor self, *, int? dim=None, bool keepdim=False) -> (Tensor min, Tensor max)
    
    auto dispatch_aminmax = [](const at::Tensor & self, ::std::optional<int64_t> dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.aminmax(dim, keepdim);
    };
    return wrap(NamedTuple, dispatch_aminmax(_r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  } else {
    // aten::aminmax.out(Tensor self, *, int? dim=None, bool keepdim=False, Tensor(a!) min, Tensor(b!) max) -> (Tensor(a!) min, Tensor(b!) max)
    auto out = _r.tensorlist_n<2>(3);
    auto dispatch_aminmax_out = [](at::Tensor & min, at::Tensor & max, const at::Tensor & self, ::std::optional<int64_t> dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::aminmax_out(min, max, self, dim, keepdim);
    };
    return wrap(NamedTuple1, dispatch_aminmax_out(out[0], out[1], _r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _compute_linear_combination
static PyObject * THPVariable__compute_linear_combination(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_compute_linear_combination(Tensor input, Tensor coefficients, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::_compute_linear_combination(Tensor input, Tensor coefficients) -> Tensor
    
    auto dispatch__compute_linear_combination = [](const at::Tensor & input, const at::Tensor & coefficients) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_compute_linear_combination(input, coefficients);
    };
    return wrap(dispatch__compute_linear_combination(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::_compute_linear_combination.out(Tensor input, Tensor coefficients, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__compute_linear_combination_out = [](at::Tensor out, const at::Tensor & input, const at::Tensor & coefficients) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_compute_linear_combination_out(out, input, coefficients);
    };
    return wrap(dispatch__compute_linear_combination_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// max
static PyObject * THPVariable_max(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_max_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_max_out_structseq();
  static PythonArgParser parser({
    "max(Tensor input, *, Tensor out=None)",
    "max(Tensor input, Tensor other, *, Tensor out=None)",
    "max(Tensor input, int64_t dim, bool keepdim=False, *, TensorList[2] out=None)",
    "max(Tensor input, Dimname dim, bool keepdim=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::max(Tensor self) -> Tensor
        
        auto dispatch_max = [](const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.max();
        };
        return wrap(dispatch_max(_r.tensor(0)));
      } else {
        // aten::max.unary_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_max_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::max_out(out, self);
        };
        return wrap(dispatch_max_out(_r.tensor(1), _r.tensor(0)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::max.other(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_max = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.max(other);
        };
        return wrap(dispatch_max(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::max.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_max_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::max_out(out, self, other);
        };
        return wrap(dispatch_max_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_max = [](const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.max(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_max(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::max.dim_max(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) max, Tensor(b!) max_values) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_max_out = [](at::Tensor & max, at::Tensor & max_values, const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::max_out(max, max_values, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_max_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::max.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_max = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.max(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_max(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::max.names_dim_max(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) max, Tensor(b!) max_values) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_max_out = [](at::Tensor & max, at::Tensor & max_values, const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::max_out(max, max_values, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_max_out(out[0], out[1], _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// amax
static PyObject * THPVariable_amax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "amax(Tensor input, IntArrayRef[1] dim=None, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::amax(Tensor self, int[1] dim=[], bool keepdim=False) -> Tensor
    
    auto dispatch_amax = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.amax(dim, keepdim);
    };
    return wrap(dispatch_amax(_r.tensor(0), _r.intlist(1), _r.toBool(2)));
  } else {
    // aten::amax.out(Tensor self, int[1] dim=[], bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_amax_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::amax_out(out, self, dim, keepdim);
    };
    return wrap(dispatch_amax_out(_r.tensor(3), _r.tensor(0), _r.intlist(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// max_pool1d_with_indices
static PyObject * THPVariable_max_pool1d_with_indices(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "max_pool1d_with_indices(Tensor input, IntArrayRef[1] kernel_size, IntArrayRef[1] stride=None, IntArrayRef[1] padding=0, IntArrayRef[1] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::max_pool1d_with_indices(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, int[1] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor)
  
  auto dispatch_max_pool1d_with_indices = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::max_pool1d_with_indices(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_max_pool1d_with_indices(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// max_pool1d
static PyObject * THPVariable_max_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "max_pool1d(Tensor input, IntArrayRef[1] kernel_size, IntArrayRef[1] stride=None, IntArrayRef[1] padding=0, IntArrayRef[1] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::max_pool1d(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, int[1] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_max_pool1d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::max_pool1d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_max_pool1d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// max_pool2d
static PyObject * THPVariable_max_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "max_pool2d(Tensor input, IntArrayRef[2] kernel_size, IntArrayRef[2] stride=None, IntArrayRef[2] padding=0, IntArrayRef[2] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_max_pool2d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::max_pool2d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_max_pool2d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mkldnn_max_pool2d
static PyObject * THPVariable_mkldnn_max_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mkldnn_max_pool2d(Tensor input, IntArrayRef[2] kernel_size, IntArrayRef[2] stride=None, IntArrayRef[2] padding=0, IntArrayRef[2] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::mkldnn_max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_mkldnn_max_pool2d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::mkldnn_max_pool2d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_mkldnn_max_pool2d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mkldnn_max_pool3d
static PyObject * THPVariable_mkldnn_max_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mkldnn_max_pool3d(Tensor input, IntArrayRef[3] kernel_size, IntArrayRef[3] stride=None, IntArrayRef[3] padding=0, IntArrayRef[3] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::mkldnn_max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_mkldnn_max_pool3d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::mkldnn_max_pool3d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_mkldnn_max_pool3d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_max_pool1d
static PyObject * THPVariable_quantized_max_pool1d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_max_pool1d(Tensor input, IntArrayRef[1] kernel_size, IntArrayRef[1] stride=None, IntArrayRef[1] padding=0, IntArrayRef[1] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_max_pool1d(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, int[1] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_quantized_max_pool1d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_max_pool1d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_quantized_max_pool1d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_max_pool2d
static PyObject * THPVariable_quantized_max_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_max_pool2d(Tensor input, IntArrayRef[2] kernel_size, IntArrayRef[2] stride=None, IntArrayRef[2] padding=0, IntArrayRef[2] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_quantized_max_pool2d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_max_pool2d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_quantized_max_pool2d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_max_pool3d
static PyObject * THPVariable_quantized_max_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_max_pool3d(Tensor input, IntArrayRef[3] kernel_size, IntArrayRef[3] stride=None, IntArrayRef[3] padding=0, IntArrayRef[3] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_quantized_max_pool3d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_max_pool3d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_quantized_max_pool3d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// max_pool3d
static PyObject * THPVariable_max_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "max_pool3d(Tensor input, IntArrayRef[3] kernel_size, IntArrayRef[3] stride=None, IntArrayRef[3] padding=0, IntArrayRef[3] dilation=1, bool ceil_mode=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor
  
  auto dispatch_max_pool3d = [](const at::Tensor & self, at::IntArrayRef kernel_size, at::IntArrayRef stride, at::IntArrayRef padding, at::IntArrayRef dilation, bool ceil_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::max_pool3d(self, kernel_size, stride, padding, dilation, ceil_mode);
  };
  return wrap(dispatch_max_pool3d(_r.tensor(0), _r.intlist(1), _r.intlist(2), _r.intlist(3), _r.intlist(4), _r.toBool(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// mean
static PyObject * THPVariable_mean(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mean(Tensor input, *, ScalarType? dtype=None, Tensor out=None)",
    "mean(Tensor input, IntArrayRef[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
    "mean(Tensor input, DimnameList[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::mean(Tensor self, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_mean = [](const at::Tensor & self, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.mean(dtype);
        };
        return wrap(dispatch_mean(_r.tensor(0), _r.scalartypeOptional(1)));
      } else {
        // aten::mean.dtype_out(Tensor self, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_mean_out = [](at::Tensor out, const at::Tensor & self, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::mean_out(out, self, dtype);
        };
        return wrap(dispatch_mean_out(_r.tensor(2), _r.tensor(0), _r.scalartypeOptional(1)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_mean = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.mean(dim, keepdim, dtype);
        };
        return wrap(dispatch_mean(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
      } else {
        // aten::mean.out(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_mean_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::mean_out(out, self, dim, keepdim, dtype);
        };
        return wrap(dispatch_mean_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::mean.names_dim(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_mean = [](const at::Tensor & self, at::DimnameList dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.mean(dim, keepdim, dtype);
        };
        return wrap(dispatch_mean(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.scalartypeOptional(3)));
      } else {
        // aten::mean.names_out(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_mean_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::mean_out(out, self, dim, keepdim, dtype);
        };
        return wrap(dispatch_mean_out(_r.tensor(4), _r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.scalartypeOptional(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// nanmean
static PyObject * THPVariable_nanmean(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nanmean(Tensor input, IntArrayRef[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::nanmean(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
    
    auto dispatch_nanmean = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.nanmean(dim, keepdim, dtype);
    };
    return wrap(dispatch_nanmean(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
  } else {
    // aten::nanmean.out(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_nanmean_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::nanmean_out(out, self, dim, keepdim, dtype);
    };
    return wrap(dispatch_nanmean_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// median
static PyObject * THPVariable_median(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_median_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_median_out_structseq();
  static PythonArgParser parser({
    "median(Tensor input)",
    "median(Tensor input, int64_t dim, bool keepdim=False, *, TensorList[2] out=None)",
    "median(Tensor input, Dimname dim, bool keepdim=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::median(Tensor self) -> Tensor
      
      auto dispatch_median = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.median();
      };
      return wrap(dispatch_median(_r.tensor(0)));
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::median.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_median = [](const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.median(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_median(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::median.dim_values(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_median_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::median_out(values, indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_median_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::median.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_median = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.median(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_median(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::median.names_dim_values(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_median_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::median_out(values, indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_median_out(out[0], out[1], _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// nanmedian
static PyObject * THPVariable_nanmedian(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_nanmedian_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_nanmedian_out_structseq();
  static PythonArgParser parser({
    "nanmedian(Tensor input)",
    "nanmedian(Tensor input, int64_t dim, bool keepdim=False, *, TensorList[2] out=None)",
    "nanmedian(Tensor input, Dimname dim, bool keepdim=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::nanmedian(Tensor self) -> Tensor
      
      auto dispatch_nanmedian = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.nanmedian();
      };
      return wrap(dispatch_nanmedian(_r.tensor(0)));
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::nanmedian.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_nanmedian = [](const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.nanmedian(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_nanmedian(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::nanmedian.dim_values(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_nanmedian_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::nanmedian_out(values, indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_nanmedian_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::nanmedian.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_nanmedian = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.nanmedian(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_nanmedian(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::nanmedian.names_dim_values(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_nanmedian_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::nanmedian_out(values, indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_nanmedian_out(out[0], out[1], _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// min
static PyObject * THPVariable_min(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_min_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_min_out_structseq();
  static PythonArgParser parser({
    "min(Tensor input, *, Tensor out=None)",
    "min(Tensor input, Tensor other, *, Tensor out=None)",
    "min(Tensor input, int64_t dim, bool keepdim=False, *, TensorList[2] out=None)",
    "min(Tensor input, Dimname dim, bool keepdim=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::min(Tensor self) -> Tensor
        
        auto dispatch_min = [](const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.min();
        };
        return wrap(dispatch_min(_r.tensor(0)));
      } else {
        // aten::min.unary_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_min_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::min_out(out, self);
        };
        return wrap(dispatch_min_out(_r.tensor(1), _r.tensor(0)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::min.other(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_min = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.min(other);
        };
        return wrap(dispatch_min(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::min.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_min_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::min_out(out, self, other);
        };
        return wrap(dispatch_min_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::min.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_min = [](const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.min(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_min(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::min.dim_min(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) min, Tensor(b!) min_indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_min_out = [](at::Tensor & min, at::Tensor & min_indices, const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::min_out(min, min_indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_min_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::min.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_min = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.min(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_min(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::min.names_dim_min(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) min, Tensor(b!) min_indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_min_out = [](at::Tensor & min, at::Tensor & min_indices, const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::min_out(min, min_indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_min_out(out[0], out[1], _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// amin
static PyObject * THPVariable_amin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "amin(Tensor input, IntArrayRef[1] dim=None, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::amin(Tensor self, int[1] dim=[], bool keepdim=False) -> Tensor
    
    auto dispatch_amin = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.amin(dim, keepdim);
    };
    return wrap(dispatch_amin(_r.tensor(0), _r.intlist(1), _r.toBool(2)));
  } else {
    // aten::amin.out(Tensor self, int[1] dim=[], bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_amin_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::amin_out(out, self, dim, keepdim);
    };
    return wrap(dispatch_amin_out(_r.tensor(3), _r.tensor(0), _r.intlist(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _mps_convolution
static PyObject * THPVariable__mps_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_mps_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_mps_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch__mps_convolution = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_mps_convolution_symint(self, weight, bias, padding, stride, dilation, groups);
  };
  return wrap(dispatch__mps_convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mkldnn_convolution
static PyObject * THPVariable_mkldnn_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mkldnn_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::mkldnn_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch_mkldnn_convolution = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::mkldnn_convolution_symint(self, weight, bias, padding, stride, dilation, groups);
  };
  return wrap(dispatch_mkldnn_convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mkldnn_rnn_layer
static PyObject * THPVariable_mkldnn_rnn_layer(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mkldnn_rnn_layer(Tensor input, Tensor weight0, Tensor weight1, Tensor weight2, Tensor weight3, Tensor hx_, Tensor cx_, bool reverse, IntArrayRef batch_sizes, int64_t mode, int64_t hidden_size, int64_t num_layers, bool has_biases, bool bidirectional, bool batch_first, bool train)",
  }, /*traceable=*/true);

  ParsedArgs<16> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::mkldnn_rnn_layer(Tensor input, Tensor weight0, Tensor weight1, Tensor weight2, Tensor weight3, Tensor hx_, Tensor cx_, bool reverse, int[] batch_sizes, int mode, int hidden_size, int num_layers, bool has_biases, bool bidirectional, bool batch_first, bool train) -> (Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch_mkldnn_rnn_layer = [](const at::Tensor & input, const at::Tensor & weight0, const at::Tensor & weight1, const at::Tensor & weight2, const at::Tensor & weight3, const at::Tensor & hx_, const at::Tensor & cx_, bool reverse, at::IntArrayRef batch_sizes, int64_t mode, int64_t hidden_size, int64_t num_layers, bool has_biases, bool bidirectional, bool batch_first, bool train) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::mkldnn_rnn_layer(input, weight0, weight1, weight2, weight3, hx_, cx_, reverse, batch_sizes, mode, hidden_size, num_layers, has_biases, bidirectional, batch_first, train);
  };
  return wrap(dispatch_mkldnn_rnn_layer(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.toBool(7), _r.intlist(8), _r.toInt64(9), _r.toInt64(10), _r.toInt64(11), _r.toBool(12), _r.toBool(13), _r.toBool(14), _r.toBool(15)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_batch_norm
static PyObject * THPVariable_miopen_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, double exponential_average_factor, double epsilon)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor)
  
  auto dispatch_miopen_batch_norm = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool training, double exponential_average_factor, double epsilon) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_batch_norm(input, weight, bias, running_mean, running_var, training, exponential_average_factor, epsilon);
  };
  return wrap(dispatch_miopen_batch_norm(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_convolution
static PyObject * THPVariable_miopen_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups, bool benchmark, bool deterministic)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor
  
  auto dispatch_miopen_convolution = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups, bool benchmark, bool deterministic) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_convolution_symint(self, weight, bias, padding, stride, dilation, groups, benchmark, deterministic);
  };
  return wrap(dispatch_miopen_convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6), _r.toBool(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_convolution_transpose
static PyObject * THPVariable_miopen_convolution_transpose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_convolution_transpose(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef padding, SymIntArrayRef output_padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups, bool benchmark, bool deterministic)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_convolution_transpose(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor
  
  auto dispatch_miopen_convolution_transpose = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef padding, c10::SymIntArrayRef output_padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups, bool benchmark, bool deterministic) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_convolution_transpose_symint(self, weight, bias, padding, output_padding, stride, dilation, groups, benchmark, deterministic);
  };
  return wrap(dispatch_miopen_convolution_transpose(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.symintlist(6), _r.toSymInt(7), _r.toBool(8), _r.toBool(9)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_depthwise_convolution
static PyObject * THPVariable_miopen_depthwise_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_depthwise_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef padding, SymIntArrayRef stride, SymIntArrayRef dilation, SymInt groups, bool benchmark, bool deterministic)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_depthwise_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor
  
  auto dispatch_miopen_depthwise_convolution = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride, c10::SymIntArrayRef dilation, c10::SymInt groups, bool benchmark, bool deterministic) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_depthwise_convolution_symint(self, weight, bias, padding, stride, dilation, groups, benchmark, deterministic);
  };
  return wrap(dispatch_miopen_depthwise_convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6), _r.toBool(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_convolution_relu
static PyObject * THPVariable_miopen_convolution_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_convolution_relu(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_convolution_relu(Tensor self, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch_miopen_convolution_relu = [](const at::Tensor & self, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_convolution_relu_symint(self, weight, bias, stride, padding, dilation, groups);
  };
  return wrap(dispatch_miopen_convolution_relu(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4), _r.symintlist(5), _r.toSymInt(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_convolution_add_relu
static PyObject * THPVariable_miopen_convolution_add_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_convolution_add_relu(Tensor input, Tensor weight, Tensor z, Scalar? alpha, Tensor? bias, SymIntArrayRef stride, SymIntArrayRef padding, SymIntArrayRef dilation, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_convolution_add_relu(Tensor self, Tensor weight, Tensor z, Scalar? alpha, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor
  
  auto dispatch_miopen_convolution_add_relu = [](const at::Tensor & self, const at::Tensor & weight, const at::Tensor & z, const ::std::optional<at::Scalar> & alpha, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef stride, c10::SymIntArrayRef padding, c10::SymIntArrayRef dilation, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_convolution_add_relu_symint(self, weight, z, alpha, bias, stride, padding, dilation, groups);
  };
  return wrap(dispatch_miopen_convolution_add_relu(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalarOptional(3), _r.optionalTensor(4), _r.symintlist(5), _r.symintlist(6), _r.symintlist(7), _r.toSymInt(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// miopen_rnn
static PyObject * THPVariable_miopen_rnn(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "miopen_rnn(Tensor input, TensorList weight, int64_t weight_stride0, Tensor hx, Tensor? cx, int64_t mode, int64_t hidden_size, int64_t num_layers, bool batch_first, double dropout, bool train, bool bidirectional, IntArrayRef batch_sizes, Tensor? dropout_state)",
  }, /*traceable=*/true);

  ParsedArgs<14> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::miopen_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor hx, Tensor? cx, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch_miopen_rnn = [](const at::Tensor & input, at::TensorList weight, int64_t weight_stride0, const at::Tensor & hx, const ::std::optional<at::Tensor> & cx, int64_t mode, int64_t hidden_size, int64_t num_layers, bool batch_first, double dropout, bool train, bool bidirectional, at::IntArrayRef batch_sizes, const ::std::optional<at::Tensor> & dropout_state) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::miopen_rnn(input, weight, weight_stride0, hx, cx, mode, hidden_size, num_layers, batch_first, dropout, train, bidirectional, batch_sizes, dropout_state);
  };
  return wrap(dispatch_miopen_rnn(_r.tensor(0), _r.tensorlist(1), _r.toInt64(2), _r.tensor(3), _r.optionalTensor(4), _r.toInt64(5), _r.toInt64(6), _r.toInt64(7), _r.toBool(8), _r.toDouble(9), _r.toBool(10), _r.toBool(11), _r.intlist(12), _r.optionalTensor(13)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mm
static PyObject * THPVariable_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mm(Tensor input, Tensor mat2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::mm(Tensor self, Tensor mat2) -> Tensor
    
    auto dispatch_mm = [](const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.mm(mat2);
    };
    return wrap(dispatch_mm(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::mm.out(Tensor self, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_mm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::mm_out(out, self, mat2);
    };
    return wrap(dispatch_mm_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _int_mm
static PyObject * THPVariable__int_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_int_mm(Tensor input, Tensor mat2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::_int_mm(Tensor self, Tensor mat2) -> Tensor
    
    auto dispatch__int_mm = [](const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_int_mm(self, mat2);
    };
    return wrap(dispatch__int_mm(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::_int_mm.out(Tensor self, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__int_mm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_int_mm_out(out, self, mat2);
    };
    return wrap(dispatch__int_mm_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _convert_weight_to_int4pack
static PyObject * THPVariable__convert_weight_to_int4pack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_convert_weight_to_int4pack(Tensor input, int64_t innerKTiles)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_convert_weight_to_int4pack(Tensor self, int innerKTiles) -> Tensor
  
  auto dispatch__convert_weight_to_int4pack = [](const at::Tensor & self, int64_t innerKTiles) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_convert_weight_to_int4pack(self, innerKTiles);
  };
  return wrap(dispatch__convert_weight_to_int4pack(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _weight_int4pack_mm
static PyObject * THPVariable__weight_int4pack_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_weight_int4pack_mm(Tensor input, Tensor mat2, int64_t qGroupSize, Tensor qScaleAndZeros)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_weight_int4pack_mm(Tensor self, Tensor mat2, int qGroupSize, Tensor qScaleAndZeros) -> Tensor
  
  auto dispatch__weight_int4pack_mm = [](const at::Tensor & self, const at::Tensor & mat2, int64_t qGroupSize, const at::Tensor & qScaleAndZeros) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_weight_int4pack_mm(self, mat2, qGroupSize, qScaleAndZeros);
  };
  return wrap(dispatch__weight_int4pack_mm(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _convert_weight_to_int4pack_for_cpu
static PyObject * THPVariable__convert_weight_to_int4pack_for_cpu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_convert_weight_to_int4pack_for_cpu(Tensor input, int64_t innerKTiles)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_convert_weight_to_int4pack_for_cpu(Tensor self, int innerKTiles) -> Tensor
  
  auto dispatch__convert_weight_to_int4pack_for_cpu = [](const at::Tensor & self, int64_t innerKTiles) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_convert_weight_to_int4pack_for_cpu(self, innerKTiles);
  };
  return wrap(dispatch__convert_weight_to_int4pack_for_cpu(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _weight_int4pack_mm_for_cpu
static PyObject * THPVariable__weight_int4pack_mm_for_cpu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_weight_int4pack_mm_for_cpu(Tensor input, Tensor mat2, int64_t qGroupSize, Tensor qScaleAndZeros)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_weight_int4pack_mm_for_cpu(Tensor self, Tensor mat2, int qGroupSize, Tensor qScaleAndZeros) -> Tensor
  
  auto dispatch__weight_int4pack_mm_for_cpu = [](const at::Tensor & self, const at::Tensor & mat2, int64_t qGroupSize, const at::Tensor & qScaleAndZeros) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_weight_int4pack_mm_for_cpu(self, mat2, qGroupSize, qScaleAndZeros);
  };
  return wrap(dispatch__weight_int4pack_mm_for_cpu(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _dyn_quant_pack_4bit_weight
static PyObject * THPVariable__dyn_quant_pack_4bit_weight(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_dyn_quant_pack_4bit_weight(Tensor weights, Tensor scales_zeros, Tensor? bias, int64_t block_size, int64_t in_features, int64_t out_features)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_dyn_quant_pack_4bit_weight(Tensor weights, Tensor scales_zeros, Tensor? bias, int block_size, int in_features, int out_features) -> Tensor
  
  auto dispatch__dyn_quant_pack_4bit_weight = [](const at::Tensor & weights, const at::Tensor & scales_zeros, const ::std::optional<at::Tensor> & bias, int64_t block_size, int64_t in_features, int64_t out_features) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_dyn_quant_pack_4bit_weight(weights, scales_zeros, bias, block_size, in_features, out_features);
  };
  return wrap(dispatch__dyn_quant_pack_4bit_weight(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.toInt64(3), _r.toInt64(4), _r.toInt64(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _dyn_quant_matmul_4bit
static PyObject * THPVariable__dyn_quant_matmul_4bit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_dyn_quant_matmul_4bit(Tensor inp, Tensor packed_weights, int64_t block_size, int64_t in_features, int64_t out_features)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_dyn_quant_matmul_4bit(Tensor inp, Tensor packed_weights, int block_size, int in_features, int out_features) -> Tensor
  
  auto dispatch__dyn_quant_matmul_4bit = [](const at::Tensor & inp, const at::Tensor & packed_weights, int64_t block_size, int64_t in_features, int64_t out_features) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_dyn_quant_matmul_4bit(inp, packed_weights, block_size, in_features, out_features);
  };
  return wrap(dispatch__dyn_quant_matmul_4bit(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toInt64(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _weight_int8pack_mm
static PyObject * THPVariable__weight_int8pack_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_weight_int8pack_mm(Tensor input, Tensor mat2, Tensor scales)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_weight_int8pack_mm(Tensor self, Tensor mat2, Tensor scales) -> Tensor
  
  auto dispatch__weight_int8pack_mm = [](const at::Tensor & self, const at::Tensor & mat2, const at::Tensor & scales) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_weight_int8pack_mm(self, mat2, scales);
  };
  return wrap(dispatch__weight_int8pack_mm(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_sparse_matmul
static PyObject * THPVariable__sparse_sparse_matmul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_sparse_matmul(Tensor input, Tensor other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_sparse_matmul(Tensor self, Tensor other) -> Tensor
  
  auto dispatch__sparse_sparse_matmul = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_sparse_matmul(self, other);
  };
  return wrap(dispatch__sparse_sparse_matmul(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// mode
static PyObject * THPVariable_mode(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_mode_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_mode_out_structseq();
  static PythonArgParser parser({
    "mode(Tensor input, int64_t dim=-1, bool keepdim=False, *, TensorList[2] out=None)",
    "mode(Tensor input, Dimname dim, bool keepdim=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::mode(Tensor self, int dim=-1, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_mode = [](const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.mode(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_mode(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::mode.values(Tensor self, int dim=-1, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_mode_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::mode_out(values, indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_mode_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::mode.dimname(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_mode = [](const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.mode(dim, keepdim);
        };
        return wrap(NamedTuple, dispatch_mode(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::mode.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_mode_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, at::Dimname dim, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::mode_out(values, indices, self, dim, keepdim);
        };
        return wrap(NamedTuple1, dispatch_mode_out(out[0], out[1], _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mul
static PyObject * THPVariable_mul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mul(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::mul.Tensor(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_mul = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.mul(other);
    };
    return wrap(dispatch_mul(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::mul.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_mul_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::mul_out(out, self, other);
    };
    return wrap(dispatch_mul_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// multiply
static PyObject * THPVariable_multiply(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "multiply(Tensor input, Tensor other, *, Tensor out=None)",
    "multiply(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::multiply.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_multiply = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.multiply(other);
        };
        return wrap(dispatch_multiply(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::multiply.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_multiply_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::multiply_out(out, self, other);
        };
        return wrap(dispatch_multiply_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::multiply.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch_multiply = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.multiply(other);
      };
      return wrap(dispatch_multiply(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mv
static PyObject * THPVariable_mv(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mv(Tensor input, Tensor vec, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::mv(Tensor self, Tensor vec) -> Tensor
    
    auto dispatch_mv = [](const at::Tensor & self, const at::Tensor & vec) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.mv(vec);
    };
    return wrap(dispatch_mv(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::mv.out(Tensor self, Tensor vec, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_mv_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & vec) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::mv_out(out, self, vec);
    };
    return wrap(dispatch_mv_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mvlgamma
static PyObject * THPVariable_mvlgamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mvlgamma(Tensor input, int64_t p, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::mvlgamma(Tensor self, int p) -> Tensor
    
    auto dispatch_mvlgamma = [](const at::Tensor & self, int64_t p) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.mvlgamma(p);
    };
    return wrap(dispatch_mvlgamma(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::mvlgamma.out(Tensor self, int p, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_mvlgamma_out = [](at::Tensor out, const at::Tensor & self, int64_t p) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::mvlgamma_out(out, self, p);
    };
    return wrap(dispatch_mvlgamma_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// narrow_copy
static PyObject * THPVariable_narrow_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "narrow_copy(Tensor input, int64_t dim, SymInt start, SymInt length, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::narrow_copy(Tensor self, int dim, SymInt start, SymInt length) -> Tensor
    
    auto dispatch_narrow_copy = [](const at::Tensor & self, int64_t dim, c10::SymInt start, c10::SymInt length) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.narrow_copy_symint(dim, start, length);
    };
    return wrap(dispatch_narrow_copy(_r.tensor(0), _r.toInt64(1), _r.toSymInt(2), _r.toSymInt(3)));
  } else {
    // aten::narrow_copy.out(Tensor self, int dim, SymInt start, SymInt length, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_narrow_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, c10::SymInt start, c10::SymInt length) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::narrow_copy_symint_out(out, self, dim, start, length);
    };
    return wrap(dispatch_narrow_copy_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.toSymInt(2), _r.toSymInt(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// narrow
static PyObject * THPVariable_narrow(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "narrow(Tensor input, int64_t dim, Tensor start, SymInt length)",
    "narrow(Tensor input, int64_t dim, SymInt start, SymInt length)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::narrow.Tensor(Tensor(a) self, int dim, Tensor start, SymInt length) -> Tensor(a)
      
      auto dispatch_narrow = [](const at::Tensor & self, int64_t dim, const at::Tensor & start, c10::SymInt length) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.narrow_symint(dim, start, length);
      };
      return wrap(dispatch_narrow(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.toSymInt(3)));
    }
    case 1: {
      // aten::narrow(Tensor(a) self, int dim, SymInt start, SymInt length) -> Tensor(a)
      
      auto dispatch_narrow = [](const at::Tensor & self, int64_t dim, c10::SymInt start, c10::SymInt length) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.narrow_symint(dim, start, length);
      };
      return wrap(dispatch_narrow(_r.tensor(0), _r.toInt64(1), _r.toSymInt(2), _r.toSymInt(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// native_batch_norm
static PyObject * THPVariable_native_batch_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, double momentum, double eps, *, TensorList[3] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(8)) {
    // aten::native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)
    
    auto dispatch_native_batch_norm = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool training, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::native_batch_norm(input, weight, bias, running_mean, running_var, training, momentum, eps);
    };
    return wrap(dispatch_native_batch_norm(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7)));
  } else {
    // aten::native_batch_norm.out(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, *, Tensor(a!) out, Tensor(b!) save_mean, Tensor(c!) save_invstd) -> (Tensor(a!), Tensor(b!), Tensor(c!))
    auto out = _r.tensorlist_n<3>(8);
    auto dispatch_native_batch_norm_out = [](at::Tensor & out, at::Tensor & save_mean, at::Tensor & save_invstd, const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, bool training, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::native_batch_norm_out(out, save_mean, save_invstd, input, weight, bias, running_mean, running_var, training, momentum, eps);
    };
    return wrap(dispatch_native_batch_norm_out(out[0], out[1], out[2], _r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _native_batch_norm_legit
static PyObject * THPVariable__native_batch_norm_legit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, double momentum, double eps, *, TensorList[3] out=None)",
    "_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, bool training, double momentum, double eps, *, TensorList[3] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(8)) {
        // aten::_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)
        
        auto dispatch__native_batch_norm_legit = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, at::Tensor running_mean, at::Tensor running_var, bool training, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::_native_batch_norm_legit(input, weight, bias, running_mean, running_var, training, momentum, eps);
        };
        return wrap(dispatch__native_batch_norm_legit(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.tensor(3), _r.tensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7)));
      } else {
        // aten::_native_batch_norm_legit.out(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, bool training, float momentum, float eps, *, Tensor(d!) out, Tensor(e!) save_mean, Tensor(f!) save_invstd) -> (Tensor(d!), Tensor(e!), Tensor(f!))
        auto out = _r.tensorlist_n<3>(8);
        auto dispatch__native_batch_norm_legit_out = [](at::Tensor & out, at::Tensor & save_mean, at::Tensor & save_invstd, const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, at::Tensor running_mean, at::Tensor running_var, bool training, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::_native_batch_norm_legit_out(out, save_mean, save_invstd, input, weight, bias, running_mean, running_var, training, momentum, eps);
        };
        return wrap(dispatch__native_batch_norm_legit_out(out[0], out[1], out[2], _r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.tensor(3), _r.tensor(4), _r.toBool(5), _r.toDouble(6), _r.toDouble(7)));
      }
    }
    case 1: {
      if (_r.isNone(6)) {
        // aten::_native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)
        
        auto dispatch__native_batch_norm_legit = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, bool training, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::_native_batch_norm_legit(input, weight, bias, training, momentum, eps);
        };
        return wrap(dispatch__native_batch_norm_legit(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.toBool(3), _r.toDouble(4), _r.toDouble(5)));
      } else {
        // aten::_native_batch_norm_legit.no_stats_out(Tensor input, Tensor? weight, Tensor? bias, bool training, float momentum, float eps, *, Tensor(a!) out, Tensor(b!) save_mean, Tensor(c!) save_invstd) -> (Tensor(a!), Tensor(b!), Tensor(c!))
        auto out = _r.tensorlist_n<3>(6);
        auto dispatch__native_batch_norm_legit_out = [](at::Tensor & out, at::Tensor & save_mean, at::Tensor & save_invstd, const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, bool training, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::_native_batch_norm_legit_out(out, save_mean, save_invstd, input, weight, bias, training, momentum, eps);
        };
        return wrap(dispatch__native_batch_norm_legit_out(out[0], out[1], out[2], _r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.toBool(3), _r.toDouble(4), _r.toDouble(5)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _native_batch_norm_legit_no_training
static PyObject * THPVariable__native_batch_norm_legit_no_training(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_native_batch_norm_legit_no_training(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, double momentum, double eps)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_native_batch_norm_legit_no_training(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor)
  
  auto dispatch__native_batch_norm_legit_no_training = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const at::Tensor & running_mean, const at::Tensor & running_var, double momentum, double eps) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_native_batch_norm_legit_no_training(input, weight, bias, running_mean, running_var, momentum, eps);
  };
  return wrap(dispatch__native_batch_norm_legit_no_training(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.tensor(3), _r.tensor(4), _r.toDouble(5), _r.toDouble(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_stats
static PyObject * THPVariable_batch_norm_stats(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_stats(Tensor input, double eps)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm_stats(Tensor input, float eps) -> (Tensor, Tensor)
  
  auto dispatch_batch_norm_stats = [](const at::Tensor & input, double eps) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm_stats(input, eps);
  };
  return wrap(dispatch_batch_norm_stats(_r.tensor(0), _r.toDouble(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_elemt
static PyObject * THPVariable_batch_norm_elemt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_elemt(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor invstd, double eps, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(6)) {
    // aten::batch_norm_elemt(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor invstd, float eps) -> Tensor
    
    auto dispatch_batch_norm_elemt = [](const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const at::Tensor & mean, const at::Tensor & invstd, double eps) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::batch_norm_elemt(input, weight, bias, mean, invstd, eps);
    };
    return wrap(dispatch_batch_norm_elemt(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.tensor(3), _r.tensor(4), _r.toDouble(5)));
  } else {
    // aten::batch_norm_elemt.out(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor invstd, float eps, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_batch_norm_elemt_out = [](at::Tensor out, const at::Tensor & input, const ::std::optional<at::Tensor> & weight, const ::std::optional<at::Tensor> & bias, const at::Tensor & mean, const at::Tensor & invstd, double eps) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::batch_norm_elemt_out(out, input, weight, bias, mean, invstd, eps);
    };
    return wrap(dispatch_batch_norm_elemt_out(_r.tensor(6), _r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.tensor(3), _r.tensor(4), _r.toDouble(5)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_gather_stats
static PyObject * THPVariable_batch_norm_gather_stats(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_gather_stats(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, double momentum, double eps, int64_t count)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm_gather_stats(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, float momentum, float eps, int count) -> (Tensor, Tensor)
  
  auto dispatch_batch_norm_gather_stats = [](const at::Tensor & input, const at::Tensor & mean, const at::Tensor & invstd, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, double momentum, double eps, int64_t count) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm_gather_stats(input, mean, invstd, running_mean, running_var, momentum, eps, count);
  };
  return wrap(dispatch_batch_norm_gather_stats(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toDouble(5), _r.toDouble(6), _r.toInt64(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_gather_stats_with_counts
static PyObject * THPVariable_batch_norm_gather_stats_with_counts(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_gather_stats_with_counts(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, double momentum, double eps, Tensor counts)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm_gather_stats_with_counts(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, float momentum, float eps, Tensor counts) -> (Tensor, Tensor)
  
  auto dispatch_batch_norm_gather_stats_with_counts = [](const at::Tensor & input, const at::Tensor & mean, const at::Tensor & invstd, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, double momentum, double eps, const at::Tensor & counts) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm_gather_stats_with_counts(input, mean, invstd, running_mean, running_var, momentum, eps, counts);
  };
  return wrap(dispatch_batch_norm_gather_stats_with_counts(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toDouble(5), _r.toDouble(6), _r.tensor(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_backward_reduce
static PyObject * THPVariable_batch_norm_backward_reduce(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_backward_reduce(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, bool input_g, bool weight_g, bool bias_g)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm_backward_reduce(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, bool input_g, bool weight_g, bool bias_g) -> (Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch_batch_norm_backward_reduce = [](const at::Tensor & grad_out, const at::Tensor & input, const at::Tensor & mean, const at::Tensor & invstd, const ::std::optional<at::Tensor> & weight, bool input_g, bool weight_g, bool bias_g) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm_backward_reduce(grad_out, input, mean, invstd, weight, input_g, weight_g, bias_g);
  };
  return wrap(dispatch_batch_norm_backward_reduce(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.toBool(5), _r.toBool(6), _r.toBool(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_backward_elemt
static PyObject * THPVariable_batch_norm_backward_elemt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_backward_elemt(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, Tensor sum_dy, Tensor sum_dy_xmu, Tensor count)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm_backward_elemt(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, Tensor sum_dy, Tensor sum_dy_xmu, Tensor count) -> Tensor
  
  auto dispatch_batch_norm_backward_elemt = [](const at::Tensor & grad_out, const at::Tensor & input, const at::Tensor & mean, const at::Tensor & invstd, const ::std::optional<at::Tensor> & weight, const at::Tensor & sum_dy, const at::Tensor & sum_dy_xmu, const at::Tensor & count) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm_backward_elemt(grad_out, input, mean, invstd, weight, sum_dy, sum_dy_xmu, count);
  };
  return wrap(dispatch_batch_norm_backward_elemt(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.tensor(5), _r.tensor(6), _r.tensor(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// batch_norm_update_stats
static PyObject * THPVariable_batch_norm_update_stats(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "batch_norm_update_stats(Tensor input, Tensor? running_mean, Tensor? running_var, double momentum)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::batch_norm_update_stats(Tensor input, Tensor? running_mean, Tensor? running_var, float momentum) -> (Tensor, Tensor)
  
  auto dispatch_batch_norm_update_stats = [](const at::Tensor & input, const ::std::optional<at::Tensor> & running_mean, const ::std::optional<at::Tensor> & running_var, double momentum) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::batch_norm_update_stats(input, running_mean, running_var, momentum);
  };
  return wrap(dispatch_batch_norm_update_stats(_r.tensor(0), _r.optionalTensor(1), _r.optionalTensor(2), _r.toDouble(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// is_vulkan_available
static PyObject * THPVariable_is_vulkan_available(PyObject* self_, PyObject* args)
{
  HANDLE_TH_ERRORS

  // aten::is_vulkan_available() -> bool
  
  auto dispatch_is_vulkan_available = []() -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::is_vulkan_available();
  };
  return wrap(dispatch_is_vulkan_available());
  END_HANDLE_TH_ERRORS
}

// _nnpack_available
static PyObject * THPVariable__nnpack_available(PyObject* self_, PyObject* args)
{
  HANDLE_TH_ERRORS

  // aten::_nnpack_available() -> bool
  
  auto dispatch__nnpack_available = []() -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::_nnpack_available();
  };
  return wrap(dispatch__nnpack_available());
  END_HANDLE_TH_ERRORS
}

// _nnpack_spatial_convolution
static PyObject * THPVariable__nnpack_spatial_convolution(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nnpack_spatial_convolution(Tensor input, Tensor weight, Tensor? bias, SymIntArrayRef[2] padding, SymIntArrayRef[2] stride=1)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nnpack_spatial_convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[2] padding, SymInt[2] stride=1) -> Tensor
  
  auto dispatch__nnpack_spatial_convolution = [](const at::Tensor & input, const at::Tensor & weight, const ::std::optional<at::Tensor> & bias, c10::SymIntArrayRef padding, c10::SymIntArrayRef stride) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nnpack_spatial_convolution_symint(input, weight, bias, padding, stride);
  };
  return wrap(dispatch__nnpack_spatial_convolution(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.symintlist(3), _r.symintlist(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// ones
static PyObject * THPVariable_ones(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ones(IntArrayRef size, *, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "ones(SymIntArrayRef size, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::ones.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(1);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_ones = [](at::IntArrayRef size, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::ones(size, names, options);
      };
      return wrap(dispatch_ones(_r.intlist(0), names, options));
    }
    case 1: {
      if (_r.isNone(1)) {
        // aten::ones(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(2))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_ones = [](c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::ones_symint(size, options);
        };
        return wrap(dispatch_ones(_r.symintlist(0), options));
      } else {
        // aten::ones.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeOptional(2),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_ones_out = [](at::Tensor out, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::ones_symint_out(out, size);
        };
        return wrap(dispatch_ones_out(_r.tensor(1), _r.symintlist(0)).set_requires_grad(_r.toBool(6)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ones_like
static PyObject * THPVariable_ones_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ones_like(Tensor input, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::ones_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  auto self = _r.tensor(0);
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceOptional(4))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_ones_like = [](const at::Tensor & self, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::ones_like(self, options, memory_format);
  };
  return wrap(dispatch_ones_like(self, options, _r.memoryformatOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// pairwise_distance
static PyObject * THPVariable_pairwise_distance(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "pairwise_distance(Tensor x1, Tensor x2, double p=2, double eps=1e-06, bool keepdim=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::pairwise_distance(Tensor x1, Tensor x2, float p=2, float eps=1e-06, bool keepdim=False) -> Tensor
  
  auto dispatch_pairwise_distance = [](const at::Tensor & x1, const at::Tensor & x2, double p, double eps, bool keepdim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::pairwise_distance(x1, x2, p, eps, keepdim);
  };
  return wrap(dispatch_pairwise_distance(_r.tensor(0), _r.tensor(1), _r.toDouble(2), _r.toDouble(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cdist
static PyObject * THPVariable_cdist(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cdist(Tensor x1, Tensor x2, double p=2, int64_t? compute_mode=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cdist(Tensor x1, Tensor x2, float p=2, int? compute_mode=None) -> Tensor
  
  auto dispatch_cdist = [](const at::Tensor & x1, const at::Tensor & x2, double p, ::std::optional<int64_t> compute_mode) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cdist(x1, x2, p, compute_mode);
  };
  return wrap(dispatch_cdist(_r.tensor(0), _r.tensor(1), _r.toDouble(2), _r.toInt64Optional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _euclidean_dist
static PyObject * THPVariable__euclidean_dist(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_euclidean_dist(Tensor x1, Tensor x2)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_euclidean_dist(Tensor x1, Tensor x2) -> Tensor
  
  auto dispatch__euclidean_dist = [](const at::Tensor & x1, const at::Tensor & x2) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_euclidean_dist(x1, x2);
  };
  return wrap(dispatch__euclidean_dist(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// pdist
static PyObject * THPVariable_pdist(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "pdist(Tensor input, double p=2)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::pdist(Tensor self, float p=2) -> Tensor
  
  auto dispatch_pdist = [](const at::Tensor & self, double p) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::pdist(self, p);
  };
  return wrap(dispatch_pdist(_r.tensor(0), _r.toDouble(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cosine_similarity
static PyObject * THPVariable_cosine_similarity(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cosine_similarity(Tensor x1, Tensor x2, int64_t dim=1, double eps=1e-08)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cosine_similarity(Tensor x1, Tensor x2, int dim=1, float eps=1e-08) -> Tensor
  
  auto dispatch_cosine_similarity = [](const at::Tensor & x1, const at::Tensor & x2, int64_t dim, double eps) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cosine_similarity(x1, x2, dim, eps);
  };
  return wrap(dispatch_cosine_similarity(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toDouble(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// permute
static PyObject * THPVariable_permute(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "permute(Tensor input, IntArrayRef dims)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::permute(Tensor(a) self, int[] dims) -> Tensor(a)
  
  auto dispatch_permute = [](const at::Tensor & self, at::IntArrayRef dims) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.permute(dims);
  };
  return wrap(dispatch_permute(_r.tensor(0), _r.intlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// movedim
static PyObject * THPVariable_movedim(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "movedim(Tensor input, int64_t source, int64_t destination)",
    "movedim(Tensor input, IntArrayRef source, IntArrayRef destination)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::movedim.int(Tensor(a) self, int source, int destination) -> Tensor(a)
      
      auto dispatch_movedim = [](const at::Tensor & self, int64_t source, int64_t destination) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.movedim(source, destination);
      };
      return wrap(dispatch_movedim(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)
      
      auto dispatch_movedim = [](const at::Tensor & self, at::IntArrayRef source, at::IntArrayRef destination) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.movedim(source, destination);
      };
      return wrap(dispatch_movedim(_r.tensor(0), _r.intlist(1), _r.intlist(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// moveaxis
static PyObject * THPVariable_moveaxis(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "moveaxis(Tensor input, int64_t source, int64_t destination)",
    "moveaxis(Tensor input, IntArrayRef source, IntArrayRef destination)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::moveaxis.int(Tensor(a) self, int source, int destination) -> Tensor(a)
      
      auto dispatch_moveaxis = [](const at::Tensor & self, int64_t source, int64_t destination) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.moveaxis(source, destination);
      };
      return wrap(dispatch_moveaxis(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::moveaxis.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)
      
      auto dispatch_moveaxis = [](const at::Tensor & self, at::IntArrayRef source, at::IntArrayRef destination) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.moveaxis(source, destination);
      };
      return wrap(dispatch_moveaxis(_r.tensor(0), _r.intlist(1), _r.intlist(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// adjoint
static PyObject * THPVariable_adjoint(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "adjoint(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::adjoint(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_adjoint = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.adjoint();
  };
  return wrap(dispatch_adjoint(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// pixel_shuffle
static PyObject * THPVariable_pixel_shuffle(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "pixel_shuffle(Tensor input, int64_t upscale_factor)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::pixel_shuffle(Tensor self, int upscale_factor) -> Tensor
  
  auto dispatch_pixel_shuffle = [](const at::Tensor & self, int64_t upscale_factor) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::pixel_shuffle(self, upscale_factor);
  };
  return wrap(dispatch_pixel_shuffle(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// pixel_unshuffle
static PyObject * THPVariable_pixel_unshuffle(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "pixel_unshuffle(Tensor input, int64_t downscale_factor)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::pixel_unshuffle(Tensor self, int downscale_factor) -> Tensor
  
  auto dispatch_pixel_unshuffle = [](const at::Tensor & self, int64_t downscale_factor) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::pixel_unshuffle(self, downscale_factor);
  };
  return wrap(dispatch_pixel_unshuffle(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// channel_shuffle
static PyObject * THPVariable_channel_shuffle(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "channel_shuffle(Tensor input, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::channel_shuffle(Tensor self, SymInt groups) -> Tensor
  
  auto dispatch_channel_shuffle = [](const at::Tensor & self, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::channel_shuffle_symint(self, groups);
  };
  return wrap(dispatch_channel_shuffle(_r.tensor(0), _r.toSymInt(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// native_channel_shuffle
static PyObject * THPVariable_native_channel_shuffle(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "native_channel_shuffle(Tensor input, SymInt groups)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::native_channel_shuffle(Tensor self, SymInt groups) -> Tensor
  
  auto dispatch_native_channel_shuffle = [](const at::Tensor & self, c10::SymInt groups) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::native_channel_shuffle_symint(self, groups);
  };
  return wrap(dispatch_native_channel_shuffle(_r.tensor(0), _r.toSymInt(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _pin_memory
static PyObject * THPVariable__pin_memory(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_pin_memory(Tensor input, Device? device=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_pin_memory(Tensor self, Device? device=None) -> Tensor
  
  auto dispatch__pin_memory = [](const at::Tensor & self, ::std::optional<at::Device> device) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_pin_memory(self, device);
  };
  return wrap(dispatch__pin_memory(_r.tensor(0), _r.deviceOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// pinverse
static PyObject * THPVariable_pinverse(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "pinverse(Tensor input, double rcond=1e-15)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::pinverse(Tensor self, float rcond=1e-15) -> Tensor
  
  auto dispatch_pinverse = [](const at::Tensor & self, double rcond) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.pinverse(rcond);
  };
  return wrap(dispatch_pinverse(_r.tensor(0), _r.toDouble(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// poisson_nll_loss
static PyObject * THPVariable_poisson_nll_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "poisson_nll_loss(Tensor input, Tensor target, bool log_input, bool full, double eps, int64_t reduction)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::poisson_nll_loss(Tensor input, Tensor target, bool log_input, bool full, float eps, int reduction) -> Tensor
  
  auto dispatch_poisson_nll_loss = [](const at::Tensor & input, const at::Tensor & target, bool log_input, bool full, double eps, int64_t reduction) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::poisson_nll_loss(input, target, log_input, full, eps, reduction);
  };
  return wrap(dispatch_poisson_nll_loss(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3), _r.toDouble(4), _r.toInt64(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rad2deg
static PyObject * THPVariable_rad2deg(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rad2deg(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::rad2deg(Tensor self) -> Tensor
    
    auto dispatch_rad2deg = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.rad2deg();
    };
    return wrap(dispatch_rad2deg(_r.tensor(0)));
  } else {
    // aten::rad2deg.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_rad2deg_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::rad2deg_out(out, self);
    };
    return wrap(dispatch_rad2deg_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rad2deg_
static PyObject * THPVariable_rad2deg_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rad2deg_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rad2deg_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_rad2deg_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.rad2deg_();
  };
  return wrap(dispatch_rad2deg_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// deg2rad
static PyObject * THPVariable_deg2rad(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "deg2rad(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::deg2rad(Tensor self) -> Tensor
    
    auto dispatch_deg2rad = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.deg2rad();
    };
    return wrap(dispatch_deg2rad(_r.tensor(0)));
  } else {
    // aten::deg2rad.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_deg2rad_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::deg2rad_out(out, self);
    };
    return wrap(dispatch_deg2rad_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// deg2rad_
static PyObject * THPVariable_deg2rad_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "deg2rad_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::deg2rad_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_deg2rad_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.deg2rad_();
  };
  return wrap(dispatch_deg2rad_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// scalar_tensor
static PyObject * THPVariable_scalar_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "scalar_tensor(Scalar s, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::scalar_tensor(Scalar s, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(1))
      .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(2))
      .requires_grad(_r.toBool(5))
      .pinned_memory(_r.toBool(4));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_scalar_tensor = [](const at::Scalar & s, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::scalar_tensor(s, options);
  };
  return wrap(dispatch_scalar_tensor(_r.scalar(0), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// rand
static PyObject * THPVariable_rand(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rand(SymIntArrayRef size, *, Generator? generator, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "rand(SymIntArrayRef size, *, Generator? generator, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "rand(SymIntArrayRef size, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "rand(SymIntArrayRef size, *, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::rand.generator_with_names(SymInt[] size, *, Generator? generator, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(2);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_rand = [](c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::rand_symint(size, generator, names, options);
      };
      return wrap(dispatch_rand(_r.symintlist(0), _r.generator(1), names, options));
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::rand.generator(SymInt[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(3))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_rand = [](c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::rand_symint(size, generator, options);
        };
        return wrap(dispatch_rand(_r.symintlist(0), _r.generator(1), options));
      } else {
        // aten::rand.generator_out(SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeOptional(3),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_rand_out = [](at::Tensor out, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::rand_symint_out(out, size, generator);
        };
        return wrap(dispatch_rand_out(_r.tensor(2), _r.symintlist(0), _r.generator(1)).set_requires_grad(_r.toBool(7)));
      }
    }
    case 2: {
      if (_r.isNone(1)) {
        // aten::rand(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(2))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_rand = [](c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::rand_symint(size, options);
        };
        return wrap(dispatch_rand(_r.symintlist(0), options));
      } else {
        // aten::rand.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeOptional(2),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_rand_out = [](at::Tensor out, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::rand_symint_out(out, size);
        };
        return wrap(dispatch_rand_out(_r.tensor(1), _r.symintlist(0)).set_requires_grad(_r.toBool(6)));
      }
    }
    case 3: {
      // aten::rand.names(SymInt[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(1);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_rand = [](c10::SymIntArrayRef size, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::rand_symint(size, names, options);
      };
      return wrap(dispatch_rand(_r.symintlist(0), names, options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rand_like
static PyObject * THPVariable_rand_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rand_like(Tensor input, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rand_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  auto self = _r.tensor(0);
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceOptional(4))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_rand_like = [](const at::Tensor & self, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::rand_like(self, options, memory_format);
  };
  return wrap(dispatch_rand_like(self, options, _r.memoryformatOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// randint
static PyObject * THPVariable_randint(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "randint(SymInt high, SymIntArrayRef size, *, Generator? generator, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randint(SymInt high, SymIntArrayRef size, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randint(SymInt low, SymInt high, SymIntArrayRef size, *, Generator? generator, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randint(SymInt low, SymInt high, SymIntArrayRef size, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::randint.generator(SymInt high, SymInt[] size, *, Generator? generator, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeWithDefault(4, at::kLong))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randint = [](c10::SymInt high, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randint_symint(high, size, generator, options);
        };
        return wrap(dispatch_randint(_r.toSymInt(0), _r.symintlist(1), _r.generator(2), options));
      } else {
        // aten::randint.generator_out(SymInt high, SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeWithDefault(4, at::kLong),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_randint_out = [](at::Tensor out, c10::SymInt high, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randint_symint_out(out, high, size, generator);
        };
        return wrap(dispatch_randint_out(_r.tensor(3), _r.toSymInt(0), _r.symintlist(1), _r.generator(2)).set_requires_grad(_r.toBool(8)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::randint(SymInt high, SymInt[] size, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeWithDefault(3, at::kLong))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randint = [](c10::SymInt high, c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randint_symint(high, size, options);
        };
        return wrap(dispatch_randint(_r.toSymInt(0), _r.symintlist(1), options));
      } else {
        // aten::randint.out(SymInt high, SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeWithDefault(3, at::kLong),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_randint_out = [](at::Tensor out, c10::SymInt high, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randint_symint_out(out, high, size);
        };
        return wrap(dispatch_randint_out(_r.tensor(2), _r.toSymInt(0), _r.symintlist(1)).set_requires_grad(_r.toBool(7)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::randint.low_generator(SymInt low, SymInt high, SymInt[] size, *, Generator? generator, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeWithDefault(5, at::kLong))
            .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(6))
            .requires_grad(_r.toBool(9))
            .pinned_memory(_r.toBool(8));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randint = [](c10::SymInt low, c10::SymInt high, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randint_symint(low, high, size, generator, options);
        };
        return wrap(dispatch_randint(_r.toSymInt(0), _r.toSymInt(1), _r.symintlist(2), _r.generator(3), options));
      } else {
        // aten::randint.low_generator_out(SymInt low, SymInt high, SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(4), _r.scalartypeWithDefault(5, at::kLong),
                               _r.isNone(5), _r.layoutOptional(6),
                               _r.deviceWithDefault(7, torch::tensors::get_default_device()), _r.isNone(7));
        
        auto dispatch_randint_out = [](at::Tensor out, c10::SymInt low, c10::SymInt high, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randint_symint_out(out, low, high, size, generator);
        };
        return wrap(dispatch_randint_out(_r.tensor(4), _r.toSymInt(0), _r.toSymInt(1), _r.symintlist(2), _r.generator(3)).set_requires_grad(_r.toBool(9)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::randint.low(SymInt low, SymInt high, SymInt[] size, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeWithDefault(4, at::kLong))
            .device(_r.deviceWithDefault(6, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(5))
            .requires_grad(_r.toBool(8))
            .pinned_memory(_r.toBool(7));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randint = [](c10::SymInt low, c10::SymInt high, c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randint_symint(low, high, size, options);
        };
        return wrap(dispatch_randint(_r.toSymInt(0), _r.toSymInt(1), _r.symintlist(2), options));
      } else {
        // aten::randint.low_out(SymInt low, SymInt high, SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(3), _r.scalartypeWithDefault(4, at::kLong),
                               _r.isNone(4), _r.layoutOptional(5),
                               _r.deviceWithDefault(6, torch::tensors::get_default_device()), _r.isNone(6));
        
        auto dispatch_randint_out = [](at::Tensor out, c10::SymInt low, c10::SymInt high, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randint_symint_out(out, low, high, size);
        };
        return wrap(dispatch_randint_out(_r.tensor(3), _r.toSymInt(0), _r.toSymInt(1), _r.symintlist(2)).set_requires_grad(_r.toBool(8)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// randint_like
static PyObject * THPVariable_randint_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "randint_like(Tensor input, SymInt high, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randint_like(Tensor input, SymInt low, SymInt high, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::randint_like(Tensor self, SymInt high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
      auto self = _r.tensor(0);
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceOptional(5))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_randint_like = [](const at::Tensor & self, c10::SymInt high, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::randint_like_symint(self, high, options, memory_format);
      };
      return wrap(dispatch_randint_like(self, _r.toSymInt(1), options, _r.memoryformatOptional(2)));
    }
    case 1: {
      // aten::randint_like.low_dtype(Tensor self, SymInt low, SymInt high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
      auto self = _r.tensor(0);
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(4))
          .device(_r.deviceOptional(6))
          .layout(_r.layoutOptional(5))
          .requires_grad(_r.toBool(8))
          .pinned_memory(_r.toBool(7));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_randint_like = [](const at::Tensor & self, c10::SymInt low, c10::SymInt high, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::randint_like_symint(self, low, high, options, memory_format);
      };
      return wrap(dispatch_randint_like(self, _r.toSymInt(1), _r.toSymInt(2), options, _r.memoryformatOptional(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// randn
static PyObject * THPVariable_randn(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "randn(SymIntArrayRef size, *, Generator? generator, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randn(SymIntArrayRef size, *, Generator? generator, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randn(SymIntArrayRef size, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randn(SymIntArrayRef size, *, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::randn.generator_with_names(SymInt[] size, *, Generator? generator, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(2);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(3))
          .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(4))
          .requires_grad(_r.toBool(7))
          .pinned_memory(_r.toBool(6));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_randn = [](c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::randn_symint(size, generator, names, options);
      };
      return wrap(dispatch_randn(_r.symintlist(0), _r.generator(1), names, options));
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::randn.generator(SymInt[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(3))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randn = [](c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randn_symint(size, generator, options);
        };
        return wrap(dispatch_randn(_r.symintlist(0), _r.generator(1), options));
      } else {
        // aten::randn.generator_out(SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeOptional(3),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_randn_out = [](at::Tensor out, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randn_symint_out(out, size, generator);
        };
        return wrap(dispatch_randn_out(_r.tensor(2), _r.symintlist(0), _r.generator(1)).set_requires_grad(_r.toBool(7)));
      }
    }
    case 2: {
      if (_r.isNone(1)) {
        // aten::randn(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(2))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randn = [](c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randn_symint(size, options);
        };
        return wrap(dispatch_randn(_r.symintlist(0), options));
      } else {
        // aten::randn.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeOptional(2),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_randn_out = [](at::Tensor out, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randn_symint_out(out, size);
        };
        return wrap(dispatch_randn_out(_r.tensor(1), _r.symintlist(0)).set_requires_grad(_r.toBool(6)));
      }
    }
    case 3: {
      // aten::randn.names(SymInt[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(1);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_randn = [](c10::SymIntArrayRef size, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::randn_symint(size, names, options);
      };
      return wrap(dispatch_randn(_r.symintlist(0), names, options));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// randn_like
static PyObject * THPVariable_randn_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "randn_like(Tensor input, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::randn_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  auto self = _r.tensor(0);
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceOptional(4))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_randn_like = [](const at::Tensor & self, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::randn_like(self, options, memory_format);
  };
  return wrap(dispatch_randn_like(self, options, _r.memoryformatOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// randperm
static PyObject * THPVariable_randperm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "randperm(SymInt n, *, Generator? generator, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "randperm(SymInt n, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::randperm.generator(SymInt n, *, Generator? generator, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeWithDefault(3, at::kLong))
            .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(4))
            .requires_grad(_r.toBool(7))
            .pinned_memory(_r.toBool(6));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randperm = [](c10::SymInt n, ::std::optional<at::Generator> generator, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randperm_symint(n, generator, options);
        };
        return wrap(dispatch_randperm(_r.toSymInt(0), _r.generator(1), options));
      } else {
        // aten::randperm.generator_out(SymInt n, *, Generator? generator, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(2), _r.scalartypeWithDefault(3, at::kLong),
                               _r.isNone(3), _r.layoutOptional(4),
                               _r.deviceWithDefault(5, torch::tensors::get_default_device()), _r.isNone(5));
        
        auto dispatch_randperm_out = [](at::Tensor out, c10::SymInt n, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randperm_symint_out(out, n, generator);
        };
        return wrap(dispatch_randperm_out(_r.tensor(2), _r.toSymInt(0), _r.generator(1)).set_requires_grad(_r.toBool(7)));
      }
    }
    case 1: {
      if (_r.isNone(1)) {
        // aten::randperm(SymInt n, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeWithDefault(2, at::kLong))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_randperm = [](c10::SymInt n, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::randperm_symint(n, options);
        };
        return wrap(dispatch_randperm(_r.toSymInt(0), options));
      } else {
        // aten::randperm.out(SymInt n, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeWithDefault(2, at::kLong),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_randperm_out = [](at::Tensor out, c10::SymInt n) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::randperm_symint_out(out, n);
        };
        return wrap(dispatch_randperm_out(_r.tensor(1), _r.toSymInt(0)).set_requires_grad(_r.toBool(6)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ravel
static PyObject * THPVariable_ravel(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ravel(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::ravel(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_ravel = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.ravel();
  };
  return wrap(dispatch_ravel(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// reciprocal
static PyObject * THPVariable_reciprocal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "reciprocal(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::reciprocal(Tensor self) -> Tensor
    
    auto dispatch_reciprocal = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.reciprocal();
    };
    return wrap(dispatch_reciprocal(_r.tensor(0)));
  } else {
    // aten::reciprocal.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_reciprocal_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::reciprocal_out(out, self);
    };
    return wrap(dispatch_reciprocal_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// reciprocal_
static PyObject * THPVariable_reciprocal_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "reciprocal_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::reciprocal_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_reciprocal_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.reciprocal_();
  };
  return wrap(dispatch_reciprocal_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// neg
static PyObject * THPVariable_neg(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "neg(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::neg(Tensor self) -> Tensor
    
    auto dispatch_neg = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.neg();
    };
    return wrap(dispatch_neg(_r.tensor(0)));
  } else {
    // aten::neg.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_neg_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::neg_out(out, self);
    };
    return wrap(dispatch_neg_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// neg_
static PyObject * THPVariable_neg_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "neg_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::neg_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_neg_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.neg_();
  };
  return wrap(dispatch_neg_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// negative
static PyObject * THPVariable_negative(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "negative(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::negative(Tensor self) -> Tensor
    
    auto dispatch_negative = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.negative();
    };
    return wrap(dispatch_negative(_r.tensor(0)));
  } else {
    // aten::negative.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_negative_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::negative_out(out, self);
    };
    return wrap(dispatch_negative_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// negative_
static PyObject * THPVariable_negative_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "negative_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::negative_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_negative_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.negative_();
  };
  return wrap(dispatch_negative_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// repeat_interleave
static PyObject * THPVariable_repeat_interleave(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "repeat_interleave(Tensor input, Tensor repeats, int64_t? dim=None, *, SymInt? output_size=None)",
    "repeat_interleave(Tensor repeats, *, SymInt? output_size=None)",
    "repeat_interleave(Tensor input, SymInt repeats, int64_t? dim=None, *, SymInt? output_size=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::repeat_interleave.self_Tensor(Tensor self, Tensor repeats, int? dim=None, *, SymInt? output_size=None) -> Tensor
      
      auto dispatch_repeat_interleave = [](const at::Tensor & self, const at::Tensor & repeats, ::std::optional<int64_t> dim, ::std::optional<c10::SymInt> output_size) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.repeat_interleave_symint(repeats, dim, output_size);
      };
      return wrap(dispatch_repeat_interleave(_r.tensor(0), _r.tensor(1), _r.toInt64Optional(2), _r.toSymIntOptional(3)));
    }
    case 1: {
      // aten::repeat_interleave.Tensor(Tensor repeats, *, SymInt? output_size=None) -> Tensor
      
      auto dispatch_repeat_interleave = [](const at::Tensor & repeats, ::std::optional<c10::SymInt> output_size) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::repeat_interleave_symint(repeats, output_size);
      };
      return wrap(dispatch_repeat_interleave(_r.tensor(0), _r.toSymIntOptional(1)));
    }
    case 2: {
      // aten::repeat_interleave.self_int(Tensor self, SymInt repeats, int? dim=None, *, SymInt? output_size=None) -> Tensor
      
      auto dispatch_repeat_interleave = [](const at::Tensor & self, c10::SymInt repeats, ::std::optional<int64_t> dim, ::std::optional<c10::SymInt> output_size) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.repeat_interleave_symint(repeats, dim, output_size);
      };
      return wrap(dispatch_repeat_interleave(_r.tensor(0), _r.toSymInt(1), _r.toInt64Optional(2), _r.toSymIntOptional(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// reshape
static PyObject * THPVariable_reshape(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "reshape(Tensor input, SymIntArrayRef shape)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::reshape(Tensor(a) self, SymInt[] shape) -> Tensor(a)
  
  auto dispatch_reshape = [](const at::Tensor & self, c10::SymIntArrayRef shape) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.reshape_symint(shape);
  };
  return wrap(dispatch_reshape(_r.tensor(0), _r.symintlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _mkldnn_reshape
static PyObject * THPVariable__mkldnn_reshape(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_mkldnn_reshape(Tensor input, IntArrayRef shape)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_mkldnn_reshape(Tensor self, int[] shape) -> Tensor
  
  auto dispatch__mkldnn_reshape = [](const at::Tensor & self, at::IntArrayRef shape) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_mkldnn_reshape(self, shape);
  };
  return wrap(dispatch__mkldnn_reshape(_r.tensor(0), _r.intlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// round
static PyObject * THPVariable_round(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "round(Tensor input, *, Tensor out=None)",
    "round(Tensor input, *, int64_t decimals, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::round(Tensor self) -> Tensor
        
        auto dispatch_round = [](const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.round();
        };
        return wrap(dispatch_round(_r.tensor(0)));
      } else {
        // aten::round.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_round_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::round_out(out, self);
        };
        return wrap(dispatch_round_out(_r.tensor(1), _r.tensor(0)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::round.decimals(Tensor self, *, int decimals) -> Tensor
        
        auto dispatch_round = [](const at::Tensor & self, int64_t decimals) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.round(decimals);
        };
        return wrap(dispatch_round(_r.tensor(0), _r.toInt64(1)));
      } else {
        // aten::round.decimals_out(Tensor self, *, int decimals, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_round_out = [](at::Tensor out, const at::Tensor & self, int64_t decimals) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::round_out(out, self, decimals);
        };
        return wrap(dispatch_round_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// round_
static PyObject * THPVariable_round_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "round_(Tensor input)",
    "round_(Tensor input, *, int64_t decimals)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::round_(Tensor(a!) self) -> Tensor(a!)
      
      auto dispatch_round_ = [](at::Tensor self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.round_();
      };
      return wrap(dispatch_round_(_r.tensor(0)));
    }
    case 1: {
      // aten::round_.decimals(Tensor(a!) self, *, int decimals) -> Tensor(a!)
      
      auto dispatch_round_ = [](at::Tensor self, int64_t decimals) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.round_(decimals);
      };
      return wrap(dispatch_round_(_r.tensor(0), _r.toInt64(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rrelu
static PyObject * THPVariable_rrelu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rrelu(Tensor input, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rrelu(Tensor self, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor
  
  auto dispatch_rrelu = [](const at::Tensor & self, const at::Scalar & lower, const at::Scalar & upper, bool training, ::std::optional<at::Generator> generator) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::rrelu(self, lower, upper, training, generator);
  };
  return wrap(dispatch_rrelu(_r.tensor(0), _r.scalar(1), _r.scalar(2), _r.toBool(3), _r.generator(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rrelu_
static PyObject * THPVariable_rrelu_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rrelu_(Tensor input, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rrelu_(Tensor(a!) self, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor(a!)
  
  auto dispatch_rrelu_ = [](at::Tensor self, const at::Scalar & lower, const at::Scalar & upper, bool training, ::std::optional<at::Generator> generator) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::rrelu_(self, lower, upper, training, generator);
  };
  return wrap(dispatch_rrelu_(_r.tensor(0), _r.scalar(1), _r.scalar(2), _r.toBool(3), _r.generator(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// relu
static PyObject * THPVariable_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "relu(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::relu(Tensor self) -> Tensor
  
  auto dispatch_relu = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.relu();
  };
  return wrap(dispatch_relu(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// relu_
static PyObject * THPVariable_relu_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "relu_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::relu_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_relu_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.relu_();
  };
  return wrap(dispatch_relu_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// prelu
static PyObject * THPVariable_prelu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "prelu(Tensor input, Tensor weight)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::prelu(Tensor self, Tensor weight) -> Tensor
  
  auto dispatch_prelu = [](const at::Tensor & self, const at::Tensor & weight) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.prelu(weight);
  };
  return wrap(dispatch_prelu(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _prelu_kernel
static PyObject * THPVariable__prelu_kernel(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_prelu_kernel(Tensor input, Tensor weight)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_prelu_kernel(Tensor self, Tensor weight) -> Tensor
  
  auto dispatch__prelu_kernel = [](const at::Tensor & self, const at::Tensor & weight) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_prelu_kernel(self, weight);
  };
  return wrap(dispatch__prelu_kernel(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// hardshrink
static PyObject * THPVariable_hardshrink(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hardshrink(Tensor input, Scalar lambd=0.5, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::hardshrink(Tensor self, Scalar lambd=0.5) -> Tensor
    
    auto dispatch_hardshrink = [](const at::Tensor & self, const at::Scalar & lambd) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.hardshrink(lambd);
    };
    return wrap(dispatch_hardshrink(_r.tensor(0), _r.scalar(1)));
  } else {
    // aten::hardshrink.out(Tensor self, Scalar lambd=0.5, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_hardshrink_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & lambd) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::hardshrink_out(out, self, lambd);
    };
    return wrap(dispatch_hardshrink_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rsqrt
static PyObject * THPVariable_rsqrt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rsqrt(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::rsqrt(Tensor self) -> Tensor
    
    auto dispatch_rsqrt = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.rsqrt();
    };
    return wrap(dispatch_rsqrt(_r.tensor(0)));
  } else {
    // aten::rsqrt.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_rsqrt_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::rsqrt_out(out, self);
    };
    return wrap(dispatch_rsqrt_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rsqrt_
static PyObject * THPVariable_rsqrt_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rsqrt_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rsqrt_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_rsqrt_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.rsqrt_();
  };
  return wrap(dispatch_rsqrt_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// select
static PyObject * THPVariable_select(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "select(Tensor input, Dimname dim, int64_t index)",
    "select(Tensor input, int64_t dim, SymInt index)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::select.Dimname(Tensor(a) self, Dimname dim, int index) -> Tensor(a)
      
      auto dispatch_select = [](const at::Tensor & self, at::Dimname dim, int64_t index) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.select(dim, index);
      };
      return wrap(dispatch_select(_r.tensor(0), _r.dimname(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::select.int(Tensor(a) self, int dim, SymInt index) -> Tensor(a)
      
      auto dispatch_select = [](const at::Tensor & self, int64_t dim, c10::SymInt index) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.select_symint(dim, index);
      };
      return wrap(dispatch_select(_r.tensor(0), _r.toInt64(1), _r.toSymInt(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// selu
static PyObject * THPVariable_selu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "selu(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::selu(Tensor self) -> Tensor
  
  auto dispatch_selu = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::selu(self);
  };
  return wrap(dispatch_selu(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// selu_
static PyObject * THPVariable_selu_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "selu_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::selu_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_selu_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::selu_(self);
  };
  return wrap(dispatch_selu_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// celu
static PyObject * THPVariable_celu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "celu(Tensor input, Scalar alpha=1.0)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::celu(Tensor self, Scalar alpha=1.0) -> Tensor
  
  auto dispatch_celu = [](const at::Tensor & self, const at::Scalar & alpha) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::celu(self, alpha);
  };
  return wrap(dispatch_celu(_r.tensor(0), _r.scalar(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// celu_
static PyObject * THPVariable_celu_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "celu_(Tensor input, Scalar alpha=1.0)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::celu_(Tensor(a!) self, Scalar alpha=1.0) -> Tensor(a!)
  
  auto dispatch_celu_ = [](at::Tensor self, const at::Scalar & alpha) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::celu_(self, alpha);
  };
  return wrap(dispatch_celu_(_r.tensor(0), _r.scalar(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sigmoid
static PyObject * THPVariable_sigmoid(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sigmoid(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sigmoid(Tensor self) -> Tensor
    
    auto dispatch_sigmoid = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sigmoid();
    };
    return wrap(dispatch_sigmoid(_r.tensor(0)));
  } else {
    // aten::sigmoid.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sigmoid_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sigmoid_out(out, self);
    };
    return wrap(dispatch_sigmoid_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sigmoid_
static PyObject * THPVariable_sigmoid_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sigmoid_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sigmoid_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_sigmoid_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.sigmoid_();
  };
  return wrap(dispatch_sigmoid_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logit
static PyObject * THPVariable_logit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logit(Tensor input, double? eps=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::logit(Tensor self, float? eps=None) -> Tensor
    
    auto dispatch_logit = [](const at::Tensor & self, ::std::optional<double> eps) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.logit(eps);
    };
    return wrap(dispatch_logit(_r.tensor(0), _r.toDoubleOptional(1)));
  } else {
    // aten::logit.out(Tensor self, float? eps=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_logit_out = [](at::Tensor out, const at::Tensor & self, ::std::optional<double> eps) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::logit_out(out, self, eps);
    };
    return wrap(dispatch_logit_out(_r.tensor(2), _r.tensor(0), _r.toDoubleOptional(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logit_
static PyObject * THPVariable_logit_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logit_(Tensor input, double? eps=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::logit_(Tensor(a!) self, float? eps=None) -> Tensor(a!)
  
  auto dispatch_logit_ = [](at::Tensor self, ::std::optional<double> eps) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.logit_(eps);
  };
  return wrap(dispatch_logit_(_r.tensor(0), _r.toDoubleOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sin
static PyObject * THPVariable_sin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sin(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sin(Tensor self) -> Tensor
    
    auto dispatch_sin = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sin();
    };
    return wrap(dispatch_sin(_r.tensor(0)));
  } else {
    // aten::sin.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sin_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sin_out(out, self);
    };
    return wrap(dispatch_sin_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sin_
static PyObject * THPVariable_sin_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sin_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sin_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_sin_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.sin_();
  };
  return wrap(dispatch_sin_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sinc
static PyObject * THPVariable_sinc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sinc(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sinc(Tensor self) -> Tensor
    
    auto dispatch_sinc = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sinc();
    };
    return wrap(dispatch_sinc(_r.tensor(0)));
  } else {
    // aten::sinc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sinc_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sinc_out(out, self);
    };
    return wrap(dispatch_sinc_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sinc_
static PyObject * THPVariable_sinc_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sinc_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sinc_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_sinc_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.sinc_();
  };
  return wrap(dispatch_sinc_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sinh
static PyObject * THPVariable_sinh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sinh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sinh(Tensor self) -> Tensor
    
    auto dispatch_sinh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sinh();
    };
    return wrap(dispatch_sinh(_r.tensor(0)));
  } else {
    // aten::sinh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sinh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sinh_out(out, self);
    };
    return wrap(dispatch_sinh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sinh_
static PyObject * THPVariable_sinh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sinh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sinh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_sinh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.sinh_();
  };
  return wrap(dispatch_sinh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// detach
static PyObject * THPVariable_detach(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "detach(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::detach(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_detach = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.detach();
  };
  return wrap(dispatch_detach(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// detach_
static PyObject * THPVariable_detach_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "detach_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::detach_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_detach_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.detach_();
  };
  return wrap(dispatch_detach_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// slice_inverse
static PyObject * THPVariable_slice_inverse(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "slice_inverse(Tensor input, Tensor src, int64_t dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::slice_inverse(Tensor(a) self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor(a)
  
  auto dispatch_slice_inverse = [](const at::Tensor & self, const at::Tensor & src, int64_t dim, ::std::optional<c10::SymInt> start, ::std::optional<c10::SymInt> end, c10::SymInt step) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.slice_inverse_symint(src, dim, start, end, step);
  };
  return wrap(dispatch_slice_inverse(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toSymIntOptional(3), _r.toSymIntOptional(4), _r.toSymInt(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// slice_scatter
static PyObject * THPVariable_slice_scatter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "slice_scatter(Tensor input, Tensor src, int64_t dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(6)) {
    // aten::slice_scatter(Tensor self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor
    
    auto dispatch_slice_scatter = [](const at::Tensor & self, const at::Tensor & src, int64_t dim, ::std::optional<c10::SymInt> start, ::std::optional<c10::SymInt> end, c10::SymInt step) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.slice_scatter_symint(src, dim, start, end, step);
    };
    return wrap(dispatch_slice_scatter(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toSymIntOptional(3), _r.toSymIntOptional(4), _r.toSymInt(5)));
  } else {
    // aten::slice_scatter.out(Tensor self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_slice_scatter_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & src, int64_t dim, ::std::optional<c10::SymInt> start, ::std::optional<c10::SymInt> end, c10::SymInt step) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::slice_scatter_symint_out(out, self, src, dim, start, end, step);
    };
    return wrap(dispatch_slice_scatter_out(_r.tensor(6), _r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toSymIntOptional(3), _r.toSymIntOptional(4), _r.toSymInt(5)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// select_scatter
static PyObject * THPVariable_select_scatter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "select_scatter(Tensor input, Tensor src, int64_t dim, SymInt index)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::select_scatter(Tensor self, Tensor src, int dim, SymInt index) -> Tensor
  
  auto dispatch_select_scatter = [](const at::Tensor & self, const at::Tensor & src, int64_t dim, c10::SymInt index) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.select_scatter_symint(src, dim, index);
  };
  return wrap(dispatch_select_scatter(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toSymInt(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// diagonal_scatter
static PyObject * THPVariable_diagonal_scatter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diagonal_scatter(Tensor input, Tensor src, int64_t offset=0, int64_t dim1=0, int64_t dim2=1)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::diagonal_scatter(Tensor self, Tensor src, int offset=0, int dim1=0, int dim2=1) -> Tensor
  
  auto dispatch_diagonal_scatter = [](const at::Tensor & self, const at::Tensor & src, int64_t offset, int64_t dim1, int64_t dim2) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.diagonal_scatter(src, offset, dim1, dim2);
  };
  return wrap(dispatch_diagonal_scatter(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.toInt64(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// as_strided_scatter
static PyObject * THPVariable_as_strided_scatter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "as_strided_scatter(Tensor input, Tensor src, SymIntArrayRef size, SymIntArrayRef stride, SymInt? storage_offset=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::as_strided_scatter(Tensor self, Tensor src, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor
  
  auto dispatch_as_strided_scatter = [](const at::Tensor & self, const at::Tensor & src, c10::SymIntArrayRef size, c10::SymIntArrayRef stride, ::std::optional<c10::SymInt> storage_offset) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.as_strided_scatter_symint(src, size, stride, storage_offset);
  };
  return wrap(dispatch_as_strided_scatter(_r.tensor(0), _r.tensor(1), _r.symintlist(2), _r.symintlist(3), _r.toSymIntOptional(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// smm
static PyObject * THPVariable_smm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "smm(Tensor input, Tensor mat2)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::smm(Tensor self, Tensor mat2) -> Tensor
  
  auto dispatch_smm = [](const at::Tensor & self, const at::Tensor & mat2) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.smm(mat2);
  };
  return wrap(dispatch_smm(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// softmax
static PyObject * THPVariable_softmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "softmax(Tensor input, int64_t dim, ScalarType? dtype=None, *, Tensor out=None)",
    "softmax(Tensor input, Dimname dim, *, ScalarType? dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_softmax = [](const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.softmax(dim, dtype);
        };
        return wrap(dispatch_softmax(_r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      } else {
        // aten::softmax.int_out(Tensor self, int dim, ScalarType? dtype=None, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_softmax_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::softmax_out(out, self, dim, dtype);
        };
        return wrap(dispatch_softmax_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
      }
    }
    case 1: {
      // aten::softmax.Dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor
      
      auto dispatch_softmax = [](const at::Tensor & self, at::Dimname dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.softmax(dim, dtype);
      };
      return wrap(dispatch_softmax(_r.tensor(0), _r.dimname(1), _r.scalartypeOptional(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _softmax
static PyObject * THPVariable__softmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_softmax(Tensor input, int64_t dim, bool half_to_float, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_softmax(Tensor self, int dim, bool half_to_float) -> Tensor
    
    auto dispatch__softmax = [](const at::Tensor & self, int64_t dim, bool half_to_float) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_softmax(self, dim, half_to_float);
    };
    return wrap(dispatch__softmax(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  } else {
    // aten::_softmax.out(Tensor self, int dim, bool half_to_float, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__softmax_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, bool half_to_float) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_softmax_out(out, self, dim, half_to_float);
    };
    return wrap(dispatch__softmax_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _softmax_backward_data
static PyObject * THPVariable__softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_softmax_backward_data(Tensor grad_output, Tensor output, int64_t dim, ScalarType input_dtype, *, Tensor grad_input=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_softmax_backward_data(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype) -> Tensor
    
    auto dispatch__softmax_backward_data = [](const at::Tensor & grad_output, const at::Tensor & output, int64_t dim, at::ScalarType input_dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_softmax_backward_data(grad_output, output, dim, input_dtype);
    };
    return wrap(dispatch__softmax_backward_data(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.scalartype(3)));
  } else {
    // aten::_softmax_backward_data.out(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype, *, Tensor(a!) grad_input) -> Tensor(a!)
    
    auto dispatch__softmax_backward_data_out = [](at::Tensor grad_input, const at::Tensor & grad_output, const at::Tensor & output, int64_t dim, at::ScalarType input_dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_softmax_backward_data_out(grad_input, grad_output, output, dim, input_dtype);
    };
    return wrap(dispatch__softmax_backward_data_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.scalartype(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unsafe_split
static PyObject * THPVariable_unsafe_split(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unsafe_split(Tensor input, SymInt split_size, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::unsafe_split.Tensor(Tensor self, SymInt split_size, int dim=0) -> Tensor[]
  
  auto dispatch_unsafe_split = [](const at::Tensor & self, c10::SymInt split_size, int64_t dim) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return self.unsafe_split_symint(split_size, dim);
  };
  return wrap(dispatch_unsafe_split(_r.tensor(0), _r.toSymInt(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// split
static PyObject * THPVariable_split(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "split(Tensor input, SymInt split_size, int64_t dim=0)",
    "split(Tensor input, SymIntArrayRef split_size, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::split.Tensor(Tensor(a -> *) self, SymInt split_size, int dim=0) -> Tensor(a)[]
      
      auto dispatch_split = [](const at::Tensor & self, c10::SymInt split_size, int64_t dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.split_symint(split_size, dim);
      };
      return wrap(dispatch_split(_r.tensor(0), _r.toSymInt(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::split.sizes(Tensor(a -> *) self, SymInt[] split_size, int dim=0) -> Tensor(a)[]
      
      auto dispatch_split = [](const at::Tensor & self, c10::SymIntArrayRef split_size, int64_t dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.split_symint(split_size, dim);
      };
      return wrap(dispatch_split(_r.tensor(0), _r.symintlist(1), _r.toInt64(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unsafe_split_with_sizes
static PyObject * THPVariable_unsafe_split_with_sizes(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unsafe_split_with_sizes(Tensor input, SymIntArrayRef split_sizes, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::unsafe_split_with_sizes(Tensor self, SymInt[] split_sizes, int dim=0) -> Tensor[]
  
  auto dispatch_unsafe_split_with_sizes = [](const at::Tensor & self, c10::SymIntArrayRef split_sizes, int64_t dim) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return self.unsafe_split_with_sizes_symint(split_sizes, dim);
  };
  return wrap(dispatch_unsafe_split_with_sizes(_r.tensor(0), _r.symintlist(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// split_with_sizes
static PyObject * THPVariable_split_with_sizes(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "split_with_sizes(Tensor input, SymIntArrayRef split_sizes, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::split_with_sizes(Tensor(a -> *) self, SymInt[] split_sizes, int dim=0) -> Tensor(a)[]
  
  auto dispatch_split_with_sizes = [](const at::Tensor & self, c10::SymIntArrayRef split_sizes, int64_t dim) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return self.split_with_sizes_symint(split_sizes, dim);
  };
  return wrap(dispatch_split_with_sizes(_r.tensor(0), _r.symintlist(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// hsplit
static PyObject * THPVariable_hsplit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hsplit(Tensor input, int64_t sections)",
    "hsplit(Tensor input, IntArrayRef indices)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::hsplit.int(Tensor(a -> *) self, int sections) -> Tensor(a)[]
      
      auto dispatch_hsplit = [](const at::Tensor & self, int64_t sections) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.hsplit(sections);
      };
      return wrap(dispatch_hsplit(_r.tensor(0), _r.toInt64(1)));
    }
    case 1: {
      // aten::hsplit.array(Tensor(a -> *) self, int[] indices) -> Tensor(a)[]
      
      auto dispatch_hsplit = [](const at::Tensor & self, at::IntArrayRef indices) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.hsplit(indices);
      };
      return wrap(dispatch_hsplit(_r.tensor(0), _r.intlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// vsplit
static PyObject * THPVariable_vsplit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "vsplit(Tensor input, int64_t sections)",
    "vsplit(Tensor input, IntArrayRef indices)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::vsplit.int(Tensor(a -> *) self, int sections) -> Tensor(a)[]
      
      auto dispatch_vsplit = [](const at::Tensor & self, int64_t sections) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.vsplit(sections);
      };
      return wrap(dispatch_vsplit(_r.tensor(0), _r.toInt64(1)));
    }
    case 1: {
      // aten::vsplit.array(Tensor(a -> *) self, int[] indices) -> Tensor(a)[]
      
      auto dispatch_vsplit = [](const at::Tensor & self, at::IntArrayRef indices) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.vsplit(indices);
      };
      return wrap(dispatch_vsplit(_r.tensor(0), _r.intlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// dsplit
static PyObject * THPVariable_dsplit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dsplit(Tensor input, int64_t sections)",
    "dsplit(Tensor input, IntArrayRef indices)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::dsplit.int(Tensor(a -> *) self, int sections) -> Tensor(a)[]
      
      auto dispatch_dsplit = [](const at::Tensor & self, int64_t sections) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.dsplit(sections);
      };
      return wrap(dispatch_dsplit(_r.tensor(0), _r.toInt64(1)));
    }
    case 1: {
      // aten::dsplit.array(Tensor(a -> *) self, int[] indices) -> Tensor(a)[]
      
      auto dispatch_dsplit = [](const at::Tensor & self, at::IntArrayRef indices) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.dsplit(indices);
      };
      return wrap(dispatch_dsplit(_r.tensor(0), _r.intlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// squeeze
static PyObject * THPVariable_squeeze(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "squeeze(Tensor input)",
    "squeeze(Tensor input, int64_t dim)",
    "squeeze(Tensor input, IntArrayRef dim)",
    "squeeze(Tensor input, Dimname dim)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::squeeze(Tensor(a) self) -> Tensor(a)
      
      auto dispatch_squeeze = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.squeeze();
      };
      return wrap(dispatch_squeeze(_r.tensor(0)));
    }
    case 1: {
      // aten::squeeze.dim(Tensor(a) self, int dim) -> Tensor(a)
      
      auto dispatch_squeeze = [](const at::Tensor & self, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.squeeze(dim);
      };
      return wrap(dispatch_squeeze(_r.tensor(0), _r.toInt64(1)));
    }
    case 2: {
      // aten::squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a)
      
      auto dispatch_squeeze = [](const at::Tensor & self, at::IntArrayRef dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.squeeze(dim);
      };
      return wrap(dispatch_squeeze(_r.tensor(0), _r.intlist(1)));
    }
    case 3: {
      // aten::squeeze.dimname(Tensor(a) self, Dimname dim) -> Tensor(a)
      
      auto dispatch_squeeze = [](const at::Tensor & self, at::Dimname dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.squeeze(dim);
      };
      return wrap(dispatch_squeeze(_r.tensor(0), _r.dimname(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// sspaddmm
static PyObject * THPVariable_sspaddmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sspaddmm(Scalar beta, Tensor input, Scalar alpha, Tensor mat1, Tensor mat2)|deprecated",
    "sspaddmm(Scalar beta, Tensor input, Tensor mat1, Tensor mat2)|deprecated",
    "sspaddmm(Tensor input, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // [deprecated] aten::sspaddmm(Scalar beta, Tensor self, Scalar alpha, Tensor mat1, Tensor mat2) -> Tensor
      
      auto dispatch_sspaddmm = [](const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.sspaddmm(mat1, mat2, beta, alpha);
      };
      return wrap(dispatch_sspaddmm(_r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
    }
    case 1: {
      // [deprecated] aten::sspaddmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2) -> Tensor
      
      auto dispatch_sspaddmm = [](const at::Scalar & beta, const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.sspaddmm(mat1, mat2, beta, 1);
      };
      return wrap(dispatch_sspaddmm(_r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::sspaddmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor
        
        auto dispatch_sspaddmm = [](const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.sspaddmm(mat1, mat2, beta, alpha);
        };
        return wrap(dispatch_sspaddmm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      } else {
        // aten::sspaddmm.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_sspaddmm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::sspaddmm_out(out, self, mat1, mat2, beta, alpha);
        };
        return wrap(dispatch_sspaddmm_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _chunk_cat
static PyObject * THPVariable__chunk_cat(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_chunk_cat(TensorList tensors, int64_t dim, int64_t num_chunks, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_chunk_cat(Tensor[] tensors, int dim, int num_chunks) -> Tensor
    
    auto dispatch__chunk_cat = [](at::TensorList tensors, int64_t dim, int64_t num_chunks) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_chunk_cat(tensors, dim, num_chunks);
    };
    return wrap(dispatch__chunk_cat(_r.tensorlist(0), _r.toInt64(1), _r.toInt64(2)));
  } else {
    // aten::_chunk_cat.out(Tensor[] tensors, int dim, int num_chunks, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__chunk_cat_out = [](at::Tensor out, at::TensorList tensors, int64_t dim, int64_t num_chunks) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_chunk_cat_out(out, tensors, dim, num_chunks);
    };
    return wrap(dispatch__chunk_cat_out(_r.tensor(3), _r.tensorlist(0), _r.toInt64(1), _r.toInt64(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// stack
static PyObject * THPVariable_stack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "stack(TensorList tensors, int64_t dim=0, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::stack(Tensor[] tensors, int dim=0) -> Tensor
    
    auto dispatch_stack = [](at::TensorList tensors, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::stack(tensors, dim);
    };
    return wrap(dispatch_stack(_r.tensorlist(0), _r.toInt64(1)));
  } else {
    // aten::stack.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_stack_out = [](at::Tensor out, at::TensorList tensors, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::stack_out(out, tensors, dim);
    };
    return wrap(dispatch_stack_out(_r.tensor(2), _r.tensorlist(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _stack
static PyObject * THPVariable__stack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_stack(TensorList tensors, int64_t dim=0, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::_stack(Tensor[] tensors, int dim=0) -> Tensor
    
    auto dispatch__stack = [](at::TensorList tensors, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_stack(tensors, dim);
    };
    return wrap(dispatch__stack(_r.tensorlist(0), _r.toInt64(1)));
  } else {
    // aten::_stack.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__stack_out = [](at::Tensor out, at::TensorList tensors, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_stack_out(out, tensors, dim);
    };
    return wrap(dispatch__stack_out(_r.tensor(2), _r.tensorlist(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// hstack
static PyObject * THPVariable_hstack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hstack(TensorList tensors, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::hstack(Tensor[] tensors) -> Tensor
    
    auto dispatch_hstack = [](at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::hstack(tensors);
    };
    return wrap(dispatch_hstack(_r.tensorlist(0)));
  } else {
    // aten::hstack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_hstack_out = [](at::Tensor out, at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::hstack_out(out, tensors);
    };
    return wrap(dispatch_hstack_out(_r.tensor(1), _r.tensorlist(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// vstack
static PyObject * THPVariable_vstack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "vstack(TensorList tensors, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::vstack(Tensor[] tensors) -> Tensor
    
    auto dispatch_vstack = [](at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::vstack(tensors);
    };
    return wrap(dispatch_vstack(_r.tensorlist(0)));
  } else {
    // aten::vstack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_vstack_out = [](at::Tensor out, at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::vstack_out(out, tensors);
    };
    return wrap(dispatch_vstack_out(_r.tensor(1), _r.tensorlist(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// dstack
static PyObject * THPVariable_dstack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dstack(TensorList tensors, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::dstack(Tensor[] tensors) -> Tensor
    
    auto dispatch_dstack = [](at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::dstack(tensors);
    };
    return wrap(dispatch_dstack(_r.tensorlist(0)));
  } else {
    // aten::dstack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_dstack_out = [](at::Tensor out, at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::dstack_out(out, tensors);
    };
    return wrap(dispatch_dstack_out(_r.tensor(1), _r.tensorlist(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// stft
static PyObject * THPVariable_stft(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "stft(Tensor input, int64_t n_fft, int64_t? hop_length=None, int64_t? win_length=None, Tensor? window=None, bool center=True, c10::string_view pad_mode=\"reflect\", bool normalized=False, bool? onesided=None, bool? return_complex=None, bool? align_to_window=None)",
    "stft(Tensor input, int64_t n_fft, int64_t? hop_length=None, int64_t? win_length=None, Tensor? window=None, bool normalized=False, bool? onesided=None, bool? return_complex=None, bool? align_to_window=None)",
  }, /*traceable=*/true);

  ParsedArgs<11> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::stft.center(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool center=True, str pad_mode="reflect", bool normalized=False, bool? onesided=None, bool? return_complex=None, bool? align_to_window=None) -> Tensor
      
      auto dispatch_stft = [](const at::Tensor & self, int64_t n_fft, ::std::optional<int64_t> hop_length, ::std::optional<int64_t> win_length, const ::std::optional<at::Tensor> & window, bool center, c10::string_view pad_mode, bool normalized, ::std::optional<bool> onesided, ::std::optional<bool> return_complex, ::std::optional<bool> align_to_window) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.stft(n_fft, hop_length, win_length, window, center, pad_mode, normalized, onesided, return_complex, align_to_window);
      };
      return wrap(dispatch_stft(_r.tensor(0), _r.toInt64(1), _r.toInt64Optional(2), _r.toInt64Optional(3), _r.optionalTensor(4), _r.toBool(5), _r.stringView(6), _r.toBool(7), _r.toBoolOptional(8), _r.toBoolOptional(9), _r.toBoolOptional(10)));
    }
    case 1: {
      // aten::stft(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool normalized=False, bool? onesided=None, bool? return_complex=None, bool? align_to_window=None) -> Tensor
      
      auto dispatch_stft = [](const at::Tensor & self, int64_t n_fft, ::std::optional<int64_t> hop_length, ::std::optional<int64_t> win_length, const ::std::optional<at::Tensor> & window, bool normalized, ::std::optional<bool> onesided, ::std::optional<bool> return_complex, ::std::optional<bool> align_to_window) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.stft(n_fft, hop_length, win_length, window, normalized, onesided, return_complex, align_to_window);
      };
      return wrap(dispatch_stft(_r.tensor(0), _r.toInt64(1), _r.toInt64Optional(2), _r.toInt64Optional(3), _r.optionalTensor(4), _r.toBool(5), _r.toBoolOptional(6), _r.toBoolOptional(7), _r.toBoolOptional(8)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// istft
static PyObject * THPVariable_istft(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "istft(Tensor input, int64_t n_fft, int64_t? hop_length=None, int64_t? win_length=None, Tensor? window=None, bool center=True, bool normalized=False, bool? onesided=None, int64_t? length=None, bool return_complex=False)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::istft(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool center=True, bool normalized=False, bool? onesided=None, int? length=None, bool return_complex=False) -> Tensor
  
  auto dispatch_istft = [](const at::Tensor & self, int64_t n_fft, ::std::optional<int64_t> hop_length, ::std::optional<int64_t> win_length, const ::std::optional<at::Tensor> & window, bool center, bool normalized, ::std::optional<bool> onesided, ::std::optional<int64_t> length, bool return_complex) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.istft(n_fft, hop_length, win_length, window, center, normalized, onesided, length, return_complex);
  };
  return wrap(dispatch_istft(_r.tensor(0), _r.toInt64(1), _r.toInt64Optional(2), _r.toInt64Optional(3), _r.optionalTensor(4), _r.toBool(5), _r.toBool(6), _r.toBoolOptional(7), _r.toInt64Optional(8), _r.toBool(9)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// sum
static PyObject * THPVariable_sum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sum(Tensor input, *, ScalarType? dtype=None)",
    "sum(Tensor input, IntArrayRef[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
    "sum(Tensor input, DimnameList[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::sum(Tensor self, *, ScalarType? dtype=None) -> Tensor
      
      auto dispatch_sum = [](const at::Tensor & self, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.sum(dtype);
      };
      return wrap(dispatch_sum(_r.tensor(0), _r.scalartypeOptional(1)));
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_sum = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.sum(dim, keepdim, dtype);
        };
        return wrap(dispatch_sum(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
      } else {
        // aten::sum.IntList_out(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_sum_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::sum_out(out, self, dim, keepdim, dtype);
        };
        return wrap(dispatch_sum_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::sum.dim_DimnameList(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_sum = [](const at::Tensor & self, at::DimnameList dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.sum(dim, keepdim, dtype);
        };
        return wrap(dispatch_sum(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.scalartypeOptional(3)));
      } else {
        // aten::sum.DimnameList_out(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_sum_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::sum_out(out, self, dim, keepdim, dtype);
        };
        return wrap(dispatch_sum_out(_r.tensor(4), _r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.scalartypeOptional(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// nansum
static PyObject * THPVariable_nansum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nansum(Tensor input, IntArrayRef[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::nansum(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
    
    auto dispatch_nansum = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.nansum(dim, keepdim, dtype);
    };
    return wrap(dispatch_nansum(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
  } else {
    // aten::nansum.out(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_nansum_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::nansum_out(out, self, dim, keepdim, dtype);
    };
    return wrap(dispatch_nansum_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.scalartypeOptional(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sqrt
static PyObject * THPVariable_sqrt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sqrt(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sqrt(Tensor self) -> Tensor
    
    auto dispatch_sqrt = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sqrt();
    };
    return wrap(dispatch_sqrt(_r.tensor(0)));
  } else {
    // aten::sqrt.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sqrt_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sqrt_out(out, self);
    };
    return wrap(dispatch_sqrt_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sqrt_
static PyObject * THPVariable_sqrt_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sqrt_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::sqrt_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_sqrt_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.sqrt_();
  };
  return wrap(dispatch_sqrt_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// square
static PyObject * THPVariable_square(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "square(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::square(Tensor self) -> Tensor
    
    auto dispatch_square = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.square();
    };
    return wrap(dispatch_square(_r.tensor(0)));
  } else {
    // aten::square.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_square_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::square_out(out, self);
    };
    return wrap(dispatch_square_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// square_
static PyObject * THPVariable_square_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "square_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::square_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_square_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.square_();
  };
  return wrap(dispatch_square_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// std
static PyObject * THPVariable_std(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "std(Tensor input, IntArrayRef[1]? dim, bool unbiased=True, bool keepdim=False, *, Tensor out=None)",
    "std(Tensor input, IntArrayRef[1]? dim=None, *, Scalar? correction=None, bool keepdim=False, Tensor out=None)",
    "std(Tensor input, bool unbiased=True)",
    "std(Tensor input, DimnameList[1] dim, bool unbiased=True, bool keepdim=False, *, Tensor out=None)",
    "std(Tensor input, DimnameList[1] dim, *, Scalar? correction=None, bool keepdim=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::std.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> Tensor
        
        auto dispatch_std = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.std(dim, unbiased, keepdim);
        };
        return wrap(dispatch_std(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::std.out(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_std_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::std_out(out, self, dim, unbiased, keepdim);
        };
        return wrap(dispatch_std_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::std.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> Tensor
        
        auto dispatch_std = [](const at::Tensor & self, at::OptionalIntArrayRef dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.std(dim, correction, keepdim);
        };
        return wrap(dispatch_std(_r.tensor(0), _r.intlistOptional(1), _r.scalarOptional(2), _r.toBool(3)));
      } else {
        // aten::std.correction_out(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_std_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::std_out(out, self, dim, correction, keepdim);
        };
        return wrap(dispatch_std_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.scalarOptional(2), _r.toBool(3)));
      }
    }
    case 2: {
      // aten::std(Tensor self, bool unbiased=True) -> Tensor
      
      auto dispatch_std = [](const at::Tensor & self, bool unbiased) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.std(unbiased);
      };
      return wrap(dispatch_std(_r.tensor(0), _r.toBool(1)));
    }
    case 3: {
      if (_r.isNone(4)) {
        // aten::std.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> Tensor
        
        auto dispatch_std = [](const at::Tensor & self, at::DimnameList dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.std(dim, unbiased, keepdim);
        };
        return wrap(dispatch_std(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::std.names_out(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_std_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::std_out(out, self, dim, unbiased, keepdim);
        };
        return wrap(dispatch_std_out(_r.tensor(4), _r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 4: {
      if (_r.isNone(4)) {
        // aten::std.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> Tensor
        
        auto dispatch_std = [](const at::Tensor & self, at::DimnameList dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.std(dim, correction, keepdim);
        };
        return wrap(dispatch_std(_r.tensor(0), _r.dimnamelist(1), _r.scalarOptional(2), _r.toBool(3)));
      } else {
        // aten::std.correction_names_out(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_std_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::std_out(out, self, dim, correction, keepdim);
        };
        return wrap(dispatch_std_out(_r.tensor(4), _r.tensor(0), _r.dimnamelist(1), _r.scalarOptional(2), _r.toBool(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// std_mean
static PyObject * THPVariable_std_mean(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "std_mean(Tensor input, IntArrayRef[1]? dim, bool unbiased=True, bool keepdim=False)",
    "std_mean(Tensor input, IntArrayRef[1]? dim=None, *, Scalar? correction=None, bool keepdim=False)",
    "std_mean(Tensor input, bool unbiased=True)",
    "std_mean(Tensor input, DimnameList[1] dim, bool unbiased=True, bool keepdim=False)",
    "std_mean(Tensor input, DimnameList[1] dim, *, Scalar? correction=None, bool keepdim=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::std_mean.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_std_mean = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool unbiased, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::std_mean(self, dim, unbiased, keepdim);
      };
      return wrap(dispatch_std_mean(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.toBool(3)));
    }
    case 1: {
      // aten::std_mean.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_std_mean = [](const at::Tensor & self, at::OptionalIntArrayRef dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::std_mean(self, dim, correction, keepdim);
      };
      return wrap(dispatch_std_mean(_r.tensor(0), _r.intlistOptional(1), _r.scalarOptional(2), _r.toBool(3)));
    }
    case 2: {
      // aten::std_mean(Tensor self, bool unbiased=True) -> (Tensor, Tensor)
      
      auto dispatch_std_mean = [](const at::Tensor & self, bool unbiased) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::std_mean(self, unbiased);
      };
      return wrap(dispatch_std_mean(_r.tensor(0), _r.toBool(1)));
    }
    case 3: {
      // aten::std_mean.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_std_mean = [](const at::Tensor & self, at::DimnameList dim, bool unbiased, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::std_mean(self, dim, unbiased, keepdim);
      };
      return wrap(dispatch_std_mean(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.toBool(3)));
    }
    case 4: {
      // aten::std_mean.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_std_mean = [](const at::Tensor & self, at::DimnameList dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::std_mean(self, dim, correction, keepdim);
      };
      return wrap(dispatch_std_mean(_r.tensor(0), _r.dimnamelist(1), _r.scalarOptional(2), _r.toBool(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// prod
static PyObject * THPVariable_prod(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "prod(Tensor input, *, ScalarType? dtype=None)",
    "prod(Tensor input, int64_t dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
    "prod(Tensor input, Dimname dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::prod(Tensor self, *, ScalarType? dtype=None) -> Tensor
      
      auto dispatch_prod = [](const at::Tensor & self, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.prod(dtype);
      };
      return wrap(dispatch_prod(_r.tensor(0), _r.scalartypeOptional(1)));
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::prod.dim_int(Tensor self, int dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_prod = [](const at::Tensor & self, int64_t dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.prod(dim, keepdim, dtype);
        };
        return wrap(dispatch_prod(_r.tensor(0), _r.toInt64(1), _r.toBool(2), _r.scalartypeOptional(3)));
      } else {
        // aten::prod.int_out(Tensor self, int dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_prod_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::prod_out(out, self, dim, keepdim, dtype);
        };
        return wrap(dispatch_prod_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.toBool(2), _r.scalartypeOptional(3)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::prod.dim_Dimname(Tensor self, Dimname dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
        
        auto dispatch_prod = [](const at::Tensor & self, at::Dimname dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.prod(dim, keepdim, dtype);
        };
        return wrap(dispatch_prod(_r.tensor(0), _r.dimname(1), _r.toBool(2), _r.scalartypeOptional(3)));
      } else {
        // aten::prod.Dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_prod_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::prod_out(out, self, dim, keepdim, dtype);
        };
        return wrap(dispatch_prod_out(_r.tensor(4), _r.tensor(0), _r.dimname(1), _r.toBool(2), _r.scalartypeOptional(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// t
static PyObject * THPVariable_t(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "t(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::t(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_t = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.t();
  };
  return wrap(dispatch_t(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tan
static PyObject * THPVariable_tan(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tan(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::tan(Tensor self) -> Tensor
    
    auto dispatch_tan = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.tan();
    };
    return wrap(dispatch_tan(_r.tensor(0)));
  } else {
    // aten::tan.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_tan_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::tan_out(out, self);
    };
    return wrap(dispatch_tan_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tan_
static PyObject * THPVariable_tan_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tan_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::tan_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_tan_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.tan_();
  };
  return wrap(dispatch_tan_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tanh
static PyObject * THPVariable_tanh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tanh(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::tanh(Tensor self) -> Tensor
    
    auto dispatch_tanh = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.tanh();
    };
    return wrap(dispatch_tanh(_r.tensor(0)));
  } else {
    // aten::tanh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_tanh_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::tanh_out(out, self);
    };
    return wrap(dispatch_tanh_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tanh_
static PyObject * THPVariable_tanh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tanh_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::tanh_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_tanh_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.tanh_();
  };
  return wrap(dispatch_tanh_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tensordot
static PyObject * THPVariable_tensordot(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tensordot(Tensor input, Tensor other, IntArrayRef dims_self, IntArrayRef dims_other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::tensordot(Tensor self, Tensor other, int[] dims_self, int[] dims_other) -> Tensor
    
    auto dispatch_tensordot = [](const at::Tensor & self, const at::Tensor & other, at::IntArrayRef dims_self, at::IntArrayRef dims_other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::tensordot(self, other, dims_self, dims_other);
    };
    return wrap(dispatch_tensordot(_r.tensor(0), _r.tensor(1), _r.intlist(2), _r.intlist(3)));
  } else {
    // aten::tensordot.out(Tensor self, Tensor other, int[] dims_self, int[] dims_other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_tensordot_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, at::IntArrayRef dims_self, at::IntArrayRef dims_other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::tensordot_out(out, self, other, dims_self, dims_other);
    };
    return wrap(dispatch_tensordot_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.intlist(2), _r.intlist(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// threshold
static PyObject * THPVariable_threshold(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "threshold(Tensor input, Scalar threshold, Scalar value, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::threshold(Tensor self, Scalar threshold, Scalar value) -> Tensor
    
    auto dispatch_threshold = [](const at::Tensor & self, const at::Scalar & threshold, const at::Scalar & value) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::threshold(self, threshold, value);
    };
    return wrap(dispatch_threshold(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
  } else {
    // aten::threshold.out(Tensor self, Scalar threshold, Scalar value, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_threshold_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & threshold, const at::Scalar & value) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::threshold_out(out, self, threshold, value);
    };
    return wrap(dispatch_threshold_out(_r.tensor(3), _r.tensor(0), _r.scalar(1), _r.scalar(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// threshold_
static PyObject * THPVariable_threshold_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "threshold_(Tensor input, Scalar threshold, Scalar value)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::threshold_(Tensor(a!) self, Scalar threshold, Scalar value) -> Tensor(a!)
  
  auto dispatch_threshold_ = [](at::Tensor self, const at::Scalar & threshold, const at::Scalar & value) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::threshold_(self, threshold, value);
  };
  return wrap(dispatch_threshold_(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tile
static PyObject * THPVariable_tile(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tile(Tensor input, SymIntArrayRef dims)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::tile(Tensor self, SymInt[] dims) -> Tensor
  
  auto dispatch_tile = [](const at::Tensor & self, c10::SymIntArrayRef dims) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.tile_symint(dims);
  };
  return wrap(dispatch_tile(_r.tensor(0), _r.symintlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// transpose
static PyObject * THPVariable_transpose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "transpose(Tensor input, int64_t dim0, int64_t dim1)",
    "transpose(Tensor input, Dimname dim0, Dimname dim1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a)
      
      auto dispatch_transpose = [](const at::Tensor & self, int64_t dim0, int64_t dim1) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.transpose(dim0, dim1);
      };
      return wrap(dispatch_transpose(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::transpose.Dimname(Tensor(a) self, Dimname dim0, Dimname dim1) -> Tensor(a)
      
      auto dispatch_transpose = [](const at::Tensor & self, at::Dimname dim0, at::Dimname dim1) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.transpose(dim0, dim1);
      };
      return wrap(dispatch_transpose(_r.tensor(0), _r.dimname(1), _r.dimname(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _mkldnn_transpose
static PyObject * THPVariable__mkldnn_transpose(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_mkldnn_transpose(Tensor input, int64_t dim0, int64_t dim1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_mkldnn_transpose(Tensor self, int dim0, int dim1) -> Tensor
  
  auto dispatch__mkldnn_transpose = [](const at::Tensor & self, int64_t dim0, int64_t dim1) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_mkldnn_transpose(self, dim0, dim1);
  };
  return wrap(dispatch__mkldnn_transpose(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _mkldnn_transpose_
static PyObject * THPVariable__mkldnn_transpose_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_mkldnn_transpose_(Tensor input, int64_t dim0, int64_t dim1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_mkldnn_transpose_(Tensor(a!) self, int dim0, int dim1) -> Tensor(a!)
  
  auto dispatch__mkldnn_transpose_ = [](at::Tensor self, int64_t dim0, int64_t dim1) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_mkldnn_transpose_(self, dim0, dim1);
  };
  return wrap(dispatch__mkldnn_transpose_(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// flip
static PyObject * THPVariable_flip(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "flip(Tensor input, IntArrayRef dims)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::flip(Tensor self, int[] dims) -> Tensor
  
  auto dispatch_flip = [](const at::Tensor & self, at::IntArrayRef dims) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.flip(dims);
  };
  return wrap(dispatch_flip(_r.tensor(0), _r.intlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fliplr
static PyObject * THPVariable_fliplr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fliplr(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fliplr(Tensor self) -> Tensor
  
  auto dispatch_fliplr = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.fliplr();
  };
  return wrap(dispatch_fliplr(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// flipud
static PyObject * THPVariable_flipud(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "flipud(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::flipud(Tensor self) -> Tensor
  
  auto dispatch_flipud = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.flipud();
  };
  return wrap(dispatch_flipud(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// roll
static PyObject * THPVariable_roll(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "roll(Tensor input, SymIntArrayRef[1] shifts, IntArrayRef[1] dims=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::roll(Tensor self, SymInt[1] shifts, int[1] dims=[]) -> Tensor
  
  auto dispatch_roll = [](const at::Tensor & self, c10::SymIntArrayRef shifts, at::IntArrayRef dims) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.roll_symint(shifts, dims);
  };
  return wrap(dispatch_roll(_r.tensor(0), _r.symintlist(1), _r.intlist(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rot90
static PyObject * THPVariable_rot90(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rot90(Tensor input, int64_t k=1, IntArrayRef dims={0,1})",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rot90(Tensor self, int k=1, int[] dims=[0,1]) -> Tensor
  
  auto dispatch_rot90 = [](const at::Tensor & self, int64_t k, at::IntArrayRef dims) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.rot90(k, dims);
  };
  return wrap(dispatch_rot90(_r.tensor(0), _r.toInt64(1), _r.intlist(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// trapezoid
static PyObject * THPVariable_trapezoid(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "trapezoid(Tensor y, Tensor x, *, int64_t dim=-1)",
    "trapezoid(Tensor y, *, Scalar dx=1, int64_t dim=-1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::trapezoid.x(Tensor y, Tensor x, *, int dim=-1) -> Tensor
      
      auto dispatch_trapezoid = [](const at::Tensor & y, const at::Tensor & x, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::trapezoid(y, x, dim);
      };
      return wrap(dispatch_trapezoid(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::trapezoid.dx(Tensor y, *, Scalar dx=1, int dim=-1) -> Tensor
      
      auto dispatch_trapezoid = [](const at::Tensor & y, const at::Scalar & dx, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::trapezoid(y, dx, dim);
      };
      return wrap(dispatch_trapezoid(_r.tensor(0), _r.scalar(1), _r.toInt64(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// trapz
static PyObject * THPVariable_trapz(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "trapz(Tensor y, *, double dx=1, int64_t dim=-1)",
    "trapz(Tensor y, Tensor x, *, int64_t dim=-1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::trapz.dx(Tensor y, *, float dx=1, int dim=-1) -> Tensor
      
      auto dispatch_trapz = [](const at::Tensor & y, double dx, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::trapz(y, dx, dim);
      };
      return wrap(dispatch_trapz(_r.tensor(0), _r.toDouble(1), _r.toInt64(2)));
    }
    case 1: {
      // aten::trapz.x(Tensor y, Tensor x, *, int dim=-1) -> Tensor
      
      auto dispatch_trapz = [](const at::Tensor & y, const at::Tensor & x, int64_t dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::trapz(y, x, dim);
      };
      return wrap(dispatch_trapz(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _transform_bias_rescale_qkv
static PyObject * THPVariable__transform_bias_rescale_qkv(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_transform_bias_rescale_qkv(Tensor qkv, Tensor qkv_bias, int64_t num_heads)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_transform_bias_rescale_qkv(Tensor qkv, Tensor qkv_bias, int num_heads) -> (Tensor, Tensor, Tensor)
  
  auto dispatch__transform_bias_rescale_qkv = [](const at::Tensor & qkv, const at::Tensor & qkv_bias, int64_t num_heads) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_transform_bias_rescale_qkv(qkv, qkv_bias, num_heads);
  };
  return wrap(dispatch__transform_bias_rescale_qkv(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_tensor_from_mask
static PyObject * THPVariable__nested_tensor_from_mask(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_tensor_from_mask(Tensor t, Tensor mask, bool mask_check=True)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_tensor_from_mask(Tensor t, Tensor mask, bool mask_check=True) -> Tensor
  
  auto dispatch__nested_tensor_from_mask = [](const at::Tensor & t, const at::Tensor & mask, bool mask_check) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_tensor_from_mask(t, mask, mask_check);
  };
  return wrap(dispatch__nested_tensor_from_mask(_r.tensor(0), _r.tensor(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_tensor_from_mask_left_aligned
static PyObject * THPVariable__nested_tensor_from_mask_left_aligned(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_tensor_from_mask_left_aligned(Tensor t, Tensor mask)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_tensor_from_mask_left_aligned(Tensor t, Tensor mask) -> bool
  
  auto dispatch__nested_tensor_from_mask_left_aligned = [](const at::Tensor & t, const at::Tensor & mask) -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_tensor_from_mask_left_aligned(t, mask);
  };
  return wrap(dispatch__nested_tensor_from_mask_left_aligned(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_from_padded
static PyObject * THPVariable__nested_from_padded(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_from_padded(Tensor padded, Tensor cpu_nested_shape_example, bool fuse_transform_0213=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_from_padded(Tensor padded, Tensor cpu_nested_shape_example, bool fuse_transform_0213=False) -> Tensor
  
  auto dispatch__nested_from_padded = [](const at::Tensor & padded, const at::Tensor & cpu_nested_shape_example, bool fuse_transform_0213) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_from_padded(padded, cpu_nested_shape_example, fuse_transform_0213);
  };
  return wrap(dispatch__nested_from_padded(_r.tensor(0), _r.tensor(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_from_padded_and_nested_example
static PyObject * THPVariable__nested_from_padded_and_nested_example(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_from_padded_and_nested_example(Tensor padded, Tensor nt_example)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_from_padded_and_nested_example(Tensor padded, Tensor nt_example) -> Tensor
  
  auto dispatch__nested_from_padded_and_nested_example = [](const at::Tensor & padded, const at::Tensor & nt_example) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_from_padded_and_nested_example(padded, nt_example);
  };
  return wrap(dispatch__nested_from_padded_and_nested_example(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_view_from_buffer
static PyObject * THPVariable__nested_view_from_buffer(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_view_from_buffer(Tensor input, Tensor nested_size, Tensor nested_strides, Tensor offsets)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_view_from_buffer(Tensor(a) self, Tensor nested_size, Tensor nested_strides, Tensor offsets) -> Tensor(a)
  
  auto dispatch__nested_view_from_buffer = [](const at::Tensor & self, const at::Tensor & nested_size, const at::Tensor & nested_strides, const at::Tensor & offsets) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_view_from_buffer(self, nested_size, nested_strides, offsets);
  };
  return wrap(dispatch__nested_view_from_buffer(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_view_from_buffer_copy
static PyObject * THPVariable__nested_view_from_buffer_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_view_from_buffer_copy(Tensor input, Tensor nested_size, Tensor nested_strides, Tensor offsets, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_nested_view_from_buffer_copy(Tensor self, Tensor nested_size, Tensor nested_strides, Tensor offsets) -> Tensor
    
    auto dispatch__nested_view_from_buffer_copy = [](const at::Tensor & self, const at::Tensor & nested_size, const at::Tensor & nested_strides, const at::Tensor & offsets) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_nested_view_from_buffer_copy(self, nested_size, nested_strides, offsets);
    };
    return wrap(dispatch__nested_view_from_buffer_copy(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
  } else {
    // aten::_nested_view_from_buffer_copy.out(Tensor self, Tensor nested_size, Tensor nested_strides, Tensor offsets, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__nested_view_from_buffer_copy_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & nested_size, const at::Tensor & nested_strides, const at::Tensor & offsets) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_nested_view_from_buffer_copy_out(out, self, nested_size, nested_strides, offsets);
    };
    return wrap(dispatch__nested_view_from_buffer_copy_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_view_from_jagged
static PyObject * THPVariable__nested_view_from_jagged(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_view_from_jagged(Tensor input, Tensor offsets, Tensor dummy, Tensor? lengths=None, int64_t ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_view_from_jagged(Tensor(a) self, Tensor offsets, Tensor dummy, Tensor? lengths=None, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None) -> Tensor(a)
  
  auto dispatch__nested_view_from_jagged = [](const at::Tensor & self, const at::Tensor & offsets, const at::Tensor & dummy, const ::std::optional<at::Tensor> & lengths, int64_t ragged_idx, const ::std::optional<at::Tensor> & min_seqlen, const ::std::optional<at::Tensor> & max_seqlen) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_view_from_jagged(self, offsets, dummy, lengths, ragged_idx, min_seqlen, max_seqlen);
  };
  return wrap(dispatch__nested_view_from_jagged(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toInt64(4), _r.optionalTensor(5), _r.optionalTensor(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_view_from_jagged_copy
static PyObject * THPVariable__nested_view_from_jagged_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_view_from_jagged_copy(Tensor input, Tensor offsets, Tensor dummy, Tensor? lengths=None, int64_t ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(7)) {
    // aten::_nested_view_from_jagged_copy(Tensor self, Tensor offsets, Tensor dummy, Tensor? lengths=None, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None) -> Tensor
    
    auto dispatch__nested_view_from_jagged_copy = [](const at::Tensor & self, const at::Tensor & offsets, const at::Tensor & dummy, const ::std::optional<at::Tensor> & lengths, int64_t ragged_idx, const ::std::optional<at::Tensor> & min_seqlen, const ::std::optional<at::Tensor> & max_seqlen) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_nested_view_from_jagged_copy(self, offsets, dummy, lengths, ragged_idx, min_seqlen, max_seqlen);
    };
    return wrap(dispatch__nested_view_from_jagged_copy(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toInt64(4), _r.optionalTensor(5), _r.optionalTensor(6)));
  } else {
    // aten::_nested_view_from_jagged_copy.out(Tensor self, Tensor offsets, Tensor dummy, Tensor? lengths=None, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__nested_view_from_jagged_copy_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & offsets, const at::Tensor & dummy, const ::std::optional<at::Tensor> & lengths, int64_t ragged_idx, const ::std::optional<at::Tensor> & min_seqlen, const ::std::optional<at::Tensor> & max_seqlen) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_nested_view_from_jagged_copy_out(out, self, offsets, dummy, lengths, ragged_idx, min_seqlen, max_seqlen);
    };
    return wrap(dispatch__nested_view_from_jagged_copy_out(_r.tensor(7), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toInt64(4), _r.optionalTensor(5), _r.optionalTensor(6)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_values
static PyObject * THPVariable__nested_get_values(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_values(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_values(Tensor(a) self) -> Tensor(a)
  
  auto dispatch__nested_get_values = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_values(self);
  };
  return wrap(dispatch__nested_get_values(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_values_copy
static PyObject * THPVariable__nested_get_values_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_values_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_nested_get_values_copy(Tensor self) -> Tensor
    
    auto dispatch__nested_get_values_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_nested_get_values_copy(self);
    };
    return wrap(dispatch__nested_get_values_copy(_r.tensor(0)));
  } else {
    // aten::_nested_get_values_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__nested_get_values_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_nested_get_values_copy_out(out, self);
    };
    return wrap(dispatch__nested_get_values_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_offsets
static PyObject * THPVariable__nested_get_offsets(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_offsets(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_offsets(Tensor self) -> Tensor
  
  auto dispatch__nested_get_offsets = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_offsets(self);
  };
  return wrap(dispatch__nested_get_offsets(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_lengths
static PyObject * THPVariable__nested_get_lengths(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_lengths(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_lengths(Tensor self) -> Tensor
  
  auto dispatch__nested_get_lengths = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_lengths(self);
  };
  return wrap(dispatch__nested_get_lengths(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_ragged_idx
static PyObject * THPVariable__nested_get_ragged_idx(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_ragged_idx(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_ragged_idx(Tensor self) -> int
  
  auto dispatch__nested_get_ragged_idx = [](const at::Tensor & self) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_ragged_idx(self);
  };
  return wrap(dispatch__nested_get_ragged_idx(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_min_seqlen
static PyObject * THPVariable__nested_get_min_seqlen(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_min_seqlen(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_min_seqlen(Tensor self) -> Tensor
  
  auto dispatch__nested_get_min_seqlen = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_min_seqlen(self);
  };
  return wrap(dispatch__nested_get_min_seqlen(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_max_seqlen
static PyObject * THPVariable__nested_get_max_seqlen(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_max_seqlen(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_max_seqlen(Tensor self) -> Tensor
  
  auto dispatch__nested_get_max_seqlen = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_max_seqlen(self);
  };
  return wrap(dispatch__nested_get_max_seqlen(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_get_jagged_dummy
static PyObject * THPVariable__nested_get_jagged_dummy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_get_jagged_dummy(Tensor any)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_get_jagged_dummy(Tensor any) -> Tensor
  
  auto dispatch__nested_get_jagged_dummy = [](const at::Tensor & any) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_get_jagged_dummy(any);
  };
  return wrap(dispatch__nested_get_jagged_dummy(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_compute_contiguous_strides_offsets
static PyObject * THPVariable__nested_compute_contiguous_strides_offsets(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_compute_contiguous_strides_offsets(Tensor nested_size)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_compute_contiguous_strides_offsets(Tensor nested_size) -> (Tensor, Tensor)
  
  auto dispatch__nested_compute_contiguous_strides_offsets = [](const at::Tensor & nested_size) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_compute_contiguous_strides_offsets(nested_size);
  };
  return wrap(dispatch__nested_compute_contiguous_strides_offsets(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _trilinear
static PyObject * THPVariable__trilinear(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_trilinear(Tensor i1, Tensor i2, Tensor i3, IntArrayRef expand1, IntArrayRef expand2, IntArrayRef expand3, IntArrayRef sumdim, int64_t unroll_dim=1)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_trilinear(Tensor i1, Tensor i2, Tensor i3, int[] expand1, int[] expand2, int[] expand3, int[] sumdim, int unroll_dim=1) -> Tensor
  
  auto dispatch__trilinear = [](const at::Tensor & i1, const at::Tensor & i2, const at::Tensor & i3, at::IntArrayRef expand1, at::IntArrayRef expand2, at::IntArrayRef expand3, at::IntArrayRef sumdim, int64_t unroll_dim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_trilinear(i1, i2, i3, expand1, expand2, expand3, sumdim, unroll_dim);
  };
  return wrap(dispatch__trilinear(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.intlist(3), _r.intlist(4), _r.intlist(5), _r.intlist(6), _r.toInt64(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// triplet_margin_loss
static PyObject * THPVariable_triplet_margin_loss(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "triplet_margin_loss(Tensor anchor, Tensor positive, Tensor negative, double margin=1.0, double p=2, double eps=1e-06, bool swap=False, int64_t reduction=at::Reduction::Mean)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::triplet_margin_loss(Tensor anchor, Tensor positive, Tensor negative, float margin=1.0, float p=2, float eps=1e-06, bool swap=False, int reduction=Mean) -> Tensor
  
  auto dispatch_triplet_margin_loss = [](const at::Tensor & anchor, const at::Tensor & positive, const at::Tensor & negative, double margin, double p, double eps, bool swap, int64_t reduction) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::triplet_margin_loss(anchor, positive, negative, margin, p, eps, swap, reduction);
  };
  return wrap(dispatch_triplet_margin_loss(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3), _r.toDouble(4), _r.toDouble(5), _r.toBool(6), _r.toInt64(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// trunc
static PyObject * THPVariable_trunc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "trunc(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::trunc(Tensor self) -> Tensor
    
    auto dispatch_trunc = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.trunc();
    };
    return wrap(dispatch_trunc(_r.tensor(0)));
  } else {
    // aten::trunc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_trunc_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::trunc_out(out, self);
    };
    return wrap(dispatch_trunc_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// trunc_
static PyObject * THPVariable_trunc_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "trunc_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::trunc_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_trunc_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.trunc_();
  };
  return wrap(dispatch_trunc_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fix
static PyObject * THPVariable_fix(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fix(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::fix(Tensor self) -> Tensor
    
    auto dispatch_fix = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.fix();
    };
    return wrap(dispatch_fix(_r.tensor(0)));
  } else {
    // aten::fix.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_fix_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::fix_out(out, self);
    };
    return wrap(dispatch_fix_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fix_
static PyObject * THPVariable_fix_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fix_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fix_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_fix_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.fix_();
  };
  return wrap(dispatch_fix_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _has_compatible_shallow_copy_type
static PyObject * THPVariable__has_compatible_shallow_copy_type(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_has_compatible_shallow_copy_type(Tensor input, Tensor from)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_has_compatible_shallow_copy_type(Tensor self, Tensor from) -> bool
  
  auto dispatch__has_compatible_shallow_copy_type = [](const at::Tensor & self, const at::Tensor & from) -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::_has_compatible_shallow_copy_type(self, from);
  };
  return wrap(dispatch__has_compatible_shallow_copy_type(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unique
static PyObject * THPVariable__unique(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_unique(Tensor input, bool sorted=True, bool return_inverse=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unique(Tensor self, bool sorted=True, bool return_inverse=False) -> (Tensor, Tensor)
  
  auto dispatch__unique = [](const at::Tensor & self, bool sorted, bool return_inverse) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_unique(self, sorted, return_inverse);
  };
  return wrap(dispatch__unique(_r.tensor(0), _r.toBool(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unique_dim
static PyObject * THPVariable_unique_dim(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unique_dim(Tensor input, int64_t dim, bool sorted=True, bool return_inverse=False, bool return_counts=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::unique_dim(Tensor self, int dim, bool sorted=True, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor)
  
  auto dispatch_unique_dim = [](const at::Tensor & self, int64_t dim, bool sorted, bool return_inverse, bool return_counts) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::unique_dim(self, dim, sorted, return_inverse, return_counts);
  };
  return wrap(dispatch_unique_dim(_r.tensor(0), _r.toInt64(1), _r.toBool(2), _r.toBool(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unique_consecutive
static PyObject * THPVariable_unique_consecutive(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unique_consecutive(Tensor input, bool return_inverse=False, bool return_counts=False, int64_t? dim=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::unique_consecutive(Tensor self, bool return_inverse=False, bool return_counts=False, int? dim=None) -> (Tensor, Tensor, Tensor)
  
  auto dispatch_unique_consecutive = [](const at::Tensor & self, bool return_inverse, bool return_counts, ::std::optional<int64_t> dim) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::unique_consecutive(self, return_inverse, return_counts, dim);
  };
  return wrap(dispatch_unique_consecutive(_r.tensor(0), _r.toBool(1), _r.toBool(2), _r.toInt64Optional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _unique2
static PyObject * THPVariable__unique2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_unique2(Tensor input, bool sorted=True, bool return_inverse=False, bool return_counts=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_unique2(Tensor self, bool sorted=True, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor)
  
  auto dispatch__unique2 = [](const at::Tensor & self, bool sorted, bool return_inverse, bool return_counts) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_unique2(self, sorted, return_inverse, return_counts);
  };
  return wrap(dispatch__unique2(_r.tensor(0), _r.toBool(1), _r.toBool(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unsqueeze
static PyObject * THPVariable_unsqueeze(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unsqueeze(Tensor input, int64_t dim)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::unsqueeze(Tensor(a) self, int dim) -> Tensor(a)
  
  auto dispatch_unsqueeze = [](const at::Tensor & self, int64_t dim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.unsqueeze(dim);
  };
  return wrap(dispatch_unsqueeze(_r.tensor(0), _r.toInt64(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// vander
static PyObject * THPVariable_vander(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "vander(Tensor x, int64_t? N=None, bool increasing=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::vander(Tensor x, int? N=None, bool increasing=False) -> Tensor
  
  auto dispatch_vander = [](const at::Tensor & x, ::std::optional<int64_t> N, bool increasing) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::vander(x, N, increasing);
  };
  return wrap(dispatch_vander(_r.tensor(0), _r.toInt64Optional(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// var
static PyObject * THPVariable_var(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "var(Tensor input, IntArrayRef[1]? dim, bool unbiased=True, bool keepdim=False, *, Tensor out=None)",
    "var(Tensor input, IntArrayRef[1]? dim=None, *, Scalar? correction=None, bool keepdim=False, Tensor out=None)",
    "var(Tensor input, bool unbiased=True)",
    "var(Tensor input, DimnameList[1] dim, bool unbiased=True, bool keepdim=False, *, Tensor out=None)",
    "var(Tensor input, DimnameList[1] dim, *, Scalar? correction=None, bool keepdim=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::var.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> Tensor
        
        auto dispatch_var = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.var(dim, unbiased, keepdim);
        };
        return wrap(dispatch_var(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::var.out(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_var_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::var_out(out, self, dim, unbiased, keepdim);
        };
        return wrap(dispatch_var_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::var.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> Tensor
        
        auto dispatch_var = [](const at::Tensor & self, at::OptionalIntArrayRef dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.var(dim, correction, keepdim);
        };
        return wrap(dispatch_var(_r.tensor(0), _r.intlistOptional(1), _r.scalarOptional(2), _r.toBool(3)));
      } else {
        // aten::var.correction_out(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_var_out = [](at::Tensor out, const at::Tensor & self, at::OptionalIntArrayRef dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::var_out(out, self, dim, correction, keepdim);
        };
        return wrap(dispatch_var_out(_r.tensor(4), _r.tensor(0), _r.intlistOptional(1), _r.scalarOptional(2), _r.toBool(3)));
      }
    }
    case 2: {
      // aten::var(Tensor self, bool unbiased=True) -> Tensor
      
      auto dispatch_var = [](const at::Tensor & self, bool unbiased) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.var(unbiased);
      };
      return wrap(dispatch_var(_r.tensor(0), _r.toBool(1)));
    }
    case 3: {
      if (_r.isNone(4)) {
        // aten::var.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> Tensor
        
        auto dispatch_var = [](const at::Tensor & self, at::DimnameList dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.var(dim, unbiased, keepdim);
        };
        return wrap(dispatch_var(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::var.names_out(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_var_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, bool unbiased, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::var_out(out, self, dim, unbiased, keepdim);
        };
        return wrap(dispatch_var_out(_r.tensor(4), _r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 4: {
      if (_r.isNone(4)) {
        // aten::var.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> Tensor
        
        auto dispatch_var = [](const at::Tensor & self, at::DimnameList dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.var(dim, correction, keepdim);
        };
        return wrap(dispatch_var(_r.tensor(0), _r.dimnamelist(1), _r.scalarOptional(2), _r.toBool(3)));
      } else {
        // aten::var.correction_names_out(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_var_out = [](at::Tensor out, const at::Tensor & self, at::DimnameList dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::var_out(out, self, dim, correction, keepdim);
        };
        return wrap(dispatch_var_out(_r.tensor(4), _r.tensor(0), _r.dimnamelist(1), _r.scalarOptional(2), _r.toBool(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// var_mean
static PyObject * THPVariable_var_mean(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "var_mean(Tensor input, IntArrayRef[1]? dim, bool unbiased=True, bool keepdim=False)",
    "var_mean(Tensor input, IntArrayRef[1]? dim=None, *, Scalar? correction=None, bool keepdim=False)",
    "var_mean(Tensor input, bool unbiased=True)",
    "var_mean(Tensor input, DimnameList[1] dim, bool unbiased=True, bool keepdim=False)",
    "var_mean(Tensor input, DimnameList[1] dim, *, Scalar? correction=None, bool keepdim=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::var_mean.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_var_mean = [](const at::Tensor & self, at::OptionalIntArrayRef dim, bool unbiased, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::var_mean(self, dim, unbiased, keepdim);
      };
      return wrap(dispatch_var_mean(_r.tensor(0), _r.intlistOptional(1), _r.toBool(2), _r.toBool(3)));
    }
    case 1: {
      // aten::var_mean.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_var_mean = [](const at::Tensor & self, at::OptionalIntArrayRef dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::var_mean(self, dim, correction, keepdim);
      };
      return wrap(dispatch_var_mean(_r.tensor(0), _r.intlistOptional(1), _r.scalarOptional(2), _r.toBool(3)));
    }
    case 2: {
      // aten::var_mean(Tensor self, bool unbiased=True) -> (Tensor, Tensor)
      
      auto dispatch_var_mean = [](const at::Tensor & self, bool unbiased) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::var_mean(self, unbiased);
      };
      return wrap(dispatch_var_mean(_r.tensor(0), _r.toBool(1)));
    }
    case 3: {
      // aten::var_mean.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_var_mean = [](const at::Tensor & self, at::DimnameList dim, bool unbiased, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::var_mean(self, dim, unbiased, keepdim);
      };
      return wrap(dispatch_var_mean(_r.tensor(0), _r.dimnamelist(1), _r.toBool(2), _r.toBool(3)));
    }
    case 4: {
      // aten::var_mean.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor)
      
      auto dispatch_var_mean = [](const at::Tensor & self, at::DimnameList dim, const ::std::optional<at::Scalar> & correction, bool keepdim) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::var_mean(self, dim, correction, keepdim);
      };
      return wrap(dispatch_var_mean(_r.tensor(0), _r.dimnamelist(1), _r.scalarOptional(2), _r.toBool(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// where
static PyObject * THPVariable_where(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "where(Tensor condition)",
    "where(Tensor condition, Tensor input, Tensor other, *, Tensor out=None)",
    "where(Tensor condition, Scalar self, Tensor other)",
    "where(Tensor condition, Tensor input, Scalar other)",
    "where(Tensor condition, Scalar self, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::where(Tensor condition) -> Tensor[]
      
      auto dispatch_where = [](const at::Tensor & condition) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::where(condition);
      };
      return wrap(dispatch_where(_r.tensor(0)));
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::where.self(Tensor condition, Tensor self, Tensor other) -> Tensor
        
        auto dispatch_where = [](const at::Tensor & condition, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.where(condition, other);
        };
        return wrap(dispatch_where(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
      } else {
        // aten::where.self_out(Tensor condition, Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_where_out = [](at::Tensor out, const at::Tensor & condition, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::where_out(out, condition, self, other);
        };
        return wrap(dispatch_where_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.tensor(2)));
      }
    }
    case 2: {
      // aten::where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> Tensor
      
      auto dispatch_where = [](const at::Tensor & condition, const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::where(condition, self, other);
      };
      return wrap(dispatch_where(_r.tensor(0), _r.scalar(1), _r.tensor(2)));
    }
    case 3: {
      // aten::where.ScalarOther(Tensor condition, Tensor self, Scalar other) -> Tensor
      
      auto dispatch_where = [](const at::Tensor & condition, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.where(condition, other);
      };
      return wrap(dispatch_where(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
    }
    case 4: {
      // aten::where.Scalar(Tensor condition, Scalar self, Scalar other) -> Tensor
      
      auto dispatch_where = [](const at::Tensor & condition, const at::Scalar & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::where(condition, self, other);
      };
      return wrap(dispatch_where(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// norm_except_dim
static PyObject * THPVariable_norm_except_dim(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "norm_except_dim(Tensor v, int64_t pow=2, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::norm_except_dim(Tensor v, int pow=2, int dim=0) -> Tensor
  
  auto dispatch_norm_except_dim = [](const at::Tensor & v, int64_t pow, int64_t dim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::norm_except_dim(v, pow, dim);
  };
  return wrap(dispatch_norm_except_dim(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _weight_norm
static PyObject * THPVariable__weight_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_weight_norm(Tensor v, Tensor g, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_weight_norm(Tensor v, Tensor g, int dim=0) -> Tensor
  
  auto dispatch__weight_norm = [](const at::Tensor & v, const at::Tensor & g, int64_t dim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_weight_norm(v, g, dim);
  };
  return wrap(dispatch__weight_norm(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _weight_norm_interface
static PyObject * THPVariable__weight_norm_interface(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_weight_norm_interface(Tensor v, Tensor g, int64_t dim=0)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_weight_norm_interface(Tensor v, Tensor g, int dim=0) -> (Tensor, Tensor)
  
  auto dispatch__weight_norm_interface = [](const at::Tensor & v, const at::Tensor & g, int64_t dim) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_weight_norm_interface(v, g, dim);
  };
  return wrap(dispatch__weight_norm_interface(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// zeros
static PyObject * THPVariable_zeros(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "zeros(IntArrayRef size, *, DimnameList? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
    "zeros(SymIntArrayRef size, *, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::zeros.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
      auto __names = _r.toDimnameListOptional(1);
      ::std::optional<DimnameList> names = __names ? ::std::make_optional(DimnameList(__names.value())) : ::std::nullopt;
      const auto options = TensorOptions()
          .dtype(_r.scalartypeOptional(2))
          .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
          .layout(_r.layoutOptional(3))
          .requires_grad(_r.toBool(6))
          .pinned_memory(_r.toBool(5));
      torch::utils::maybe_initialize_device(options);
      
      auto dispatch_zeros = [](at::IntArrayRef size, ::std::optional<at::DimnameList> names, at::TensorOptions options) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return torch::zeros(size, names, options);
      };
      return wrap(dispatch_zeros(_r.intlist(0), names, options));
    }
    case 1: {
      if (_r.isNone(1)) {
        // aten::zeros(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(2))
            .device(_r.deviceWithDefault(4, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(3))
            .requires_grad(_r.toBool(6))
            .pinned_memory(_r.toBool(5));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_zeros = [](c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::zeros_symint(size, options);
        };
        return wrap(dispatch_zeros(_r.symintlist(0), options));
      } else {
        // aten::zeros.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(1), _r.scalartypeOptional(2),
                               _r.isNone(2), _r.layoutOptional(3),
                               _r.deviceWithDefault(4, torch::tensors::get_default_device()), _r.isNone(4));
        
        auto dispatch_zeros_out = [](at::Tensor out, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::zeros_symint_out(out, size);
        };
        return wrap(dispatch_zeros_out(_r.tensor(1), _r.symintlist(0)).set_requires_grad(_r.toBool(6)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _efficientzerotensor
static PyObject * THPVariable__efficientzerotensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_efficientzerotensor(SymIntArrayRef size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_efficientzerotensor(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(1))
      .device(_r.deviceWithDefault(3, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(2))
      .requires_grad(_r.toBool(5))
      .pinned_memory(_r.toBool(4));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch__efficientzerotensor = [](c10::SymIntArrayRef size, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::_efficientzerotensor_symint(size, options);
  };
  return wrap(dispatch__efficientzerotensor(_r.symintlist(0), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// zeros_like
static PyObject * THPVariable_zeros_like(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "zeros_like(Tensor input, *, MemoryFormat? memory_format=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::zeros_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor
  auto self = _r.tensor(0);
  const auto options = TensorOptions()
      .dtype(_r.scalartypeOptional(2))
      .device(_r.deviceOptional(4))
      .layout(_r.layoutOptional(3))
      .requires_grad(_r.toBool(6))
      .pinned_memory(_r.toBool(5));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_zeros_like = [](const at::Tensor & self, at::TensorOptions options, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::zeros_like(self, options, memory_format);
  };
  return wrap(dispatch_zeros_like(self, options, _r.memoryformatOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _standard_gamma_grad
static PyObject * THPVariable__standard_gamma_grad(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_standard_gamma_grad(Tensor input, Tensor output)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_standard_gamma_grad(Tensor self, Tensor output) -> Tensor
  
  auto dispatch__standard_gamma_grad = [](const at::Tensor & self, const at::Tensor & output) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_standard_gamma_grad(self, output);
  };
  return wrap(dispatch__standard_gamma_grad(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _standard_gamma
static PyObject * THPVariable__standard_gamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_standard_gamma(Tensor input, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_standard_gamma(Tensor self, Generator? generator=None) -> Tensor
  
  auto dispatch__standard_gamma = [](const at::Tensor & self, ::std::optional<at::Generator> generator) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_standard_gamma(self, generator);
  };
  return wrap(dispatch__standard_gamma(_r.tensor(0), _r.generator(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _dirichlet_grad
static PyObject * THPVariable__dirichlet_grad(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_dirichlet_grad(Tensor x, Tensor alpha, Tensor total)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_dirichlet_grad(Tensor x, Tensor alpha, Tensor total) -> Tensor
  
  auto dispatch__dirichlet_grad = [](const at::Tensor & x, const at::Tensor & alpha, const at::Tensor & total) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_dirichlet_grad(x, alpha, total);
  };
  return wrap(dispatch__dirichlet_grad(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sample_dirichlet
static PyObject * THPVariable__sample_dirichlet(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sample_dirichlet(Tensor input, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sample_dirichlet(Tensor self, Generator? generator=None) -> Tensor
  
  auto dispatch__sample_dirichlet = [](const at::Tensor & self, ::std::optional<at::Generator> generator) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sample_dirichlet(self, generator);
  };
  return wrap(dispatch__sample_dirichlet(_r.tensor(0), _r.generator(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// poisson
static PyObject * THPVariable_poisson(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "poisson(Tensor input, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::poisson(Tensor self, Generator? generator=None) -> Tensor
  
  auto dispatch_poisson = [](const at::Tensor & self, ::std::optional<at::Generator> generator) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::poisson(self, generator);
  };
  return wrap(dispatch_poisson(_r.tensor(0), _r.generator(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// binomial
static PyObject * THPVariable_binomial(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "binomial(Tensor count, Tensor prob, Generator? generator=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::binomial(Tensor count, Tensor prob, Generator? generator=None) -> Tensor
  
  auto dispatch_binomial = [](const at::Tensor & count, const at::Tensor & prob, ::std::optional<at::Generator> generator) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::binomial(count, prob, generator);
  };
  return wrap(dispatch_binomial(_r.tensor(0), _r.tensor(1), _r.generator(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// native_norm
static PyObject * THPVariable_native_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "native_norm(Tensor input, Scalar p=2)",
    "native_norm(Tensor input, Scalar? p, IntArrayRef[1] dim, bool keepdim, ScalarType? dtype)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::native_norm(Tensor self, Scalar p=2) -> Tensor
      
      auto dispatch_native_norm = [](const at::Tensor & self, const at::Scalar & p) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::native_norm(self, p);
      };
      return wrap(dispatch_native_norm(_r.tensor(0), _r.scalar(1)));
    }
    case 1: {
      // aten::native_norm.ScalarOpt_dim_dtype(Tensor self, Scalar? p, int[1] dim, bool keepdim, ScalarType? dtype) -> Tensor
      
      auto dispatch_native_norm = [](const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::IntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::native_norm(self, p, dim, keepdim, dtype);
      };
      return wrap(dispatch_native_norm(_r.tensor(0), _r.scalarOptional(1), _r.intlist(2), _r.toBool(3), _r.scalartypeOptional(4)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _sparse_sum
static PyObject * THPVariable__sparse_sum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_sum(Tensor input)",
    "_sparse_sum(Tensor input, *, ScalarType dtype)",
    "_sparse_sum(Tensor input, IntArrayRef[1] dim)",
    "_sparse_sum(Tensor input, IntArrayRef[1] dim, *, ScalarType dtype)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_sparse_sum(Tensor self) -> Tensor
      
      auto dispatch__sparse_sum = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_sparse_sum(self);
      };
      return wrap(dispatch__sparse_sum(_r.tensor(0)));
    }
    case 1: {
      // aten::_sparse_sum.dtype(Tensor self, *, ScalarType dtype) -> Tensor
      
      auto dispatch__sparse_sum = [](const at::Tensor & self, at::ScalarType dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_sparse_sum(self, dtype);
      };
      return wrap(dispatch__sparse_sum(_r.tensor(0), _r.scalartype(1)));
    }
    case 2: {
      // aten::_sparse_sum.dim(Tensor self, int[1] dim) -> Tensor
      
      auto dispatch__sparse_sum = [](const at::Tensor & self, at::IntArrayRef dim) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_sparse_sum(self, dim);
      };
      return wrap(dispatch__sparse_sum(_r.tensor(0), _r.intlist(1)));
    }
    case 3: {
      // aten::_sparse_sum.dim_dtype(Tensor self, int[1] dim, *, ScalarType dtype) -> Tensor
      
      auto dispatch__sparse_sum = [](const at::Tensor & self, at::IntArrayRef dim, at::ScalarType dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_sparse_sum(self, dim, dtype);
      };
      return wrap(dispatch__sparse_sum(_r.tensor(0), _r.intlist(1), _r.scalartype(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_csr_sum
static PyObject * THPVariable__sparse_csr_sum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_csr_sum(Tensor input, IntArrayRef[1] dim, bool keepdim=False, *, ScalarType? dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_csr_sum.dim_dtype(Tensor self, int[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
  
  auto dispatch__sparse_csr_sum = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_csr_sum(self, dim, keepdim, dtype);
  };
  return wrap(dispatch__sparse_csr_sum(_r.tensor(0), _r.intlist(1), _r.toBool(2), _r.scalartypeOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_csr_prod
static PyObject * THPVariable__sparse_csr_prod(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_csr_prod(Tensor input, IntArrayRef[1] dim, bool keepdim=False, *, ScalarType? dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_csr_prod.dim_dtype(Tensor self, int[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor
  
  auto dispatch__sparse_csr_prod = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_csr_prod(self, dim, keepdim, dtype);
  };
  return wrap(dispatch__sparse_csr_prod(_r.tensor(0), _r.intlist(1), _r.toBool(2), _r.scalartypeOptional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_softmax_backward_data
static PyObject * THPVariable__sparse_softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_softmax_backward_data(Tensor grad_output, Tensor output, int64_t dim, Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_softmax_backward_data(Tensor grad_output, Tensor output, int dim, Tensor self) -> Tensor
  
  auto dispatch__sparse_softmax_backward_data = [](const at::Tensor & grad_output, const at::Tensor & output, int64_t dim, const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_softmax_backward_data(grad_output, output, dim, self);
  };
  return wrap(dispatch__sparse_softmax_backward_data(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_log_softmax_backward_data
static PyObject * THPVariable__sparse_log_softmax_backward_data(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_log_softmax_backward_data(Tensor grad_output, Tensor output, int64_t dim, Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_sparse_log_softmax_backward_data(Tensor grad_output, Tensor output, int dim, Tensor self) -> Tensor
  
  auto dispatch__sparse_log_softmax_backward_data = [](const at::Tensor & grad_output, const at::Tensor & output, int64_t dim, const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_sparse_log_softmax_backward_data(grad_output, output, dim, self);
  };
  return wrap(dispatch__sparse_log_softmax_backward_data(_r.tensor(0), _r.tensor(1), _r.toInt64(2), _r.tensor(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// norm
static PyObject * THPVariable_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "norm(Tensor input, Scalar p=2)",
    "norm(Tensor input, Scalar? p, *, ScalarType dtype)",
    "norm(Tensor input, Scalar? p, IntArrayRef[1] dim, bool keepdim, *, ScalarType dtype, Tensor out=None)",
    "norm(Tensor input, Scalar? p, IntArrayRef[1] dim, bool keepdim=False, *, Tensor out=None)",
    "norm(Tensor input, Scalar? p, DimnameList[1] dim, bool keepdim, *, ScalarType dtype, Tensor out=None)",
    "norm(Tensor input, Scalar? p, DimnameList[1] dim, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::norm.Scalar(Tensor self, Scalar p=2) -> Tensor
      
      auto dispatch_norm = [](const at::Tensor & self, const at::Scalar & p) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.norm(p);
      };
      return wrap(dispatch_norm(_r.tensor(0), _r.scalar(1)));
    }
    case 1: {
      // aten::norm.ScalarOpt_dtype(Tensor self, Scalar? p, *, ScalarType dtype) -> Tensor
      
      auto dispatch_norm = [](const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::ScalarType dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.norm(p, dtype);
      };
      return wrap(dispatch_norm(_r.tensor(0), _r.scalarOptional(1), _r.scalartype(2)));
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::norm.ScalarOpt_dim_dtype(Tensor self, Scalar? p, int[1] dim, bool keepdim, *, ScalarType dtype) -> Tensor
        
        auto dispatch_norm = [](const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::IntArrayRef dim, bool keepdim, at::ScalarType dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.norm(p, dim, keepdim, dtype);
        };
        return wrap(dispatch_norm(_r.tensor(0), _r.scalarOptional(1), _r.intlist(2), _r.toBool(3), _r.scalartype(4)));
      } else {
        // aten::norm.dtype_out(Tensor self, Scalar? p, int[1] dim, bool keepdim, *, ScalarType dtype, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_norm_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::IntArrayRef dim, bool keepdim, at::ScalarType dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::norm_out(out, self, p, dim, keepdim, dtype);
        };
        return wrap(dispatch_norm_out(_r.tensor(5), _r.tensor(0), _r.scalarOptional(1), _r.intlist(2), _r.toBool(3), _r.scalartype(4)));
      }
    }
    case 3: {
      if (_r.isNone(4)) {
        // aten::norm.ScalarOpt_dim(Tensor self, Scalar? p, int[1] dim, bool keepdim=False) -> Tensor
        
        auto dispatch_norm = [](const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.norm(p, dim, keepdim);
        };
        return wrap(dispatch_norm(_r.tensor(0), _r.scalarOptional(1), _r.intlist(2), _r.toBool(3)));
      } else {
        // aten::norm.out(Tensor self, Scalar? p, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_norm_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::norm_out(out, self, p, dim, keepdim);
        };
        return wrap(dispatch_norm_out(_r.tensor(4), _r.tensor(0), _r.scalarOptional(1), _r.intlist(2), _r.toBool(3)));
      }
    }
    case 4: {
      if (_r.isNone(5)) {
        // aten::norm.names_ScalarOpt_dim_dtype(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim, *, ScalarType dtype) -> Tensor
        
        auto dispatch_norm = [](const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::DimnameList dim, bool keepdim, at::ScalarType dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.norm(p, dim, keepdim, dtype);
        };
        return wrap(dispatch_norm(_r.tensor(0), _r.scalarOptional(1), _r.dimnamelist(2), _r.toBool(3), _r.scalartype(4)));
      } else {
        // aten::norm.names_dtype_out(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim, *, ScalarType dtype, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_norm_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::DimnameList dim, bool keepdim, at::ScalarType dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::norm_out(out, self, p, dim, keepdim, dtype);
        };
        return wrap(dispatch_norm_out(_r.tensor(5), _r.tensor(0), _r.scalarOptional(1), _r.dimnamelist(2), _r.toBool(3), _r.scalartype(4)));
      }
    }
    case 5: {
      if (_r.isNone(4)) {
        // aten::norm.names_ScalarOpt_dim(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim=False) -> Tensor
        
        auto dispatch_norm = [](const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::DimnameList dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.norm(p, dim, keepdim);
        };
        return wrap(dispatch_norm(_r.tensor(0), _r.scalarOptional(1), _r.dimnamelist(2), _r.toBool(3)));
      } else {
        // aten::norm.names_out(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_norm_out = [](at::Tensor out, const at::Tensor & self, const ::std::optional<at::Scalar> & p, at::DimnameList dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::norm_out(out, self, p, dim, keepdim);
        };
        return wrap(dispatch_norm_out(_r.tensor(4), _r.tensor(0), _r.scalarOptional(1), _r.dimnamelist(2), _r.toBool(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// frexp
static PyObject * THPVariable_frexp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_frexp_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_frexp_out_structseq();
  static PythonArgParser parser({
    "frexp(Tensor input, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::frexp.Tensor(Tensor self) -> (Tensor mantissa, Tensor exponent)
    
    auto dispatch_frexp = [](const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.frexp();
    };
    return wrap(NamedTuple, dispatch_frexp(_r.tensor(0)));
  } else {
    // aten::frexp.Tensor_out(Tensor self, *, Tensor(a!) mantissa, Tensor(b!) exponent) -> (Tensor(a!) mantissa, Tensor(b!) exponent)
    auto out = _r.tensorlist_n<2>(1);
    auto dispatch_frexp_out = [](at::Tensor & mantissa, at::Tensor & exponent, const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::frexp_out(mantissa, exponent, self);
    };
    return wrap(NamedTuple1, dispatch_frexp_out(out[0], out[1], _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// frobenius_norm
static PyObject * THPVariable_frobenius_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "frobenius_norm(Tensor input, IntArrayRef[1] dim, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::frobenius_norm.dim(Tensor self, int[1] dim, bool keepdim=False) -> Tensor
    
    auto dispatch_frobenius_norm = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::frobenius_norm(self, dim, keepdim);
    };
    return wrap(dispatch_frobenius_norm(_r.tensor(0), _r.intlist(1), _r.toBool(2)));
  } else {
    // aten::frobenius_norm.out(Tensor self, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_frobenius_norm_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::frobenius_norm_out(out, self, dim, keepdim);
    };
    return wrap(dispatch_frobenius_norm_out(_r.tensor(3), _r.tensor(0), _r.intlist(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// nuclear_norm
static PyObject * THPVariable_nuclear_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nuclear_norm(Tensor input, IntArrayRef[2] dim, bool keepdim=False, *, Tensor out=None)",
    "nuclear_norm(Tensor input, bool keepdim=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::nuclear_norm.dim(Tensor self, int[2] dim, bool keepdim=False) -> Tensor
        
        auto dispatch_nuclear_norm = [](const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::nuclear_norm(self, dim, keepdim);
        };
        return wrap(dispatch_nuclear_norm(_r.tensor(0), _r.intlist(1), _r.toBool(2)));
      } else {
        // aten::nuclear_norm.dim_out(Tensor self, int[2] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_nuclear_norm_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::nuclear_norm_out(out, self, dim, keepdim);
        };
        return wrap(dispatch_nuclear_norm_out(_r.tensor(3), _r.tensor(0), _r.intlist(1), _r.toBool(2)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::nuclear_norm(Tensor self, bool keepdim=False) -> Tensor
        
        auto dispatch_nuclear_norm = [](const at::Tensor & self, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::nuclear_norm(self, keepdim);
        };
        return wrap(dispatch_nuclear_norm(_r.tensor(0), _r.toBool(1)));
      } else {
        // aten::nuclear_norm.out(Tensor self, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_nuclear_norm_out = [](at::Tensor out, const at::Tensor & self, bool keepdim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::nuclear_norm_out(out, self, keepdim);
        };
        return wrap(dispatch_nuclear_norm_out(_r.tensor(2), _r.tensor(0), _r.toBool(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// clone
static PyObject * THPVariable_clone(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "clone(Tensor input, *, MemoryFormat? memory_format=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::clone(Tensor self, *, MemoryFormat? memory_format=None) -> Tensor
  
  auto dispatch_clone = [](const at::Tensor & self, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.clone(memory_format);
  };
  return wrap(dispatch_clone(_r.tensor(0), _r.memoryformatOptional(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// positive
static PyObject * THPVariable_positive(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "positive(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::positive(Tensor(a) self) -> Tensor(a)
  
  auto dispatch_positive = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.positive();
  };
  return wrap(dispatch_positive(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// resize_as_
static PyObject * THPVariable_resize_as_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "resize_as_(Tensor input, Tensor the_template, *, MemoryFormat? memory_format=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::resize_as_(Tensor(a!) self, Tensor the_template, *, MemoryFormat? memory_format=None) -> Tensor(a!)
  
  auto dispatch_resize_as_ = [](const at::Tensor & self, const at::Tensor & the_template, ::std::optional<at::MemoryFormat> memory_format) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.resize_as_(the_template, memory_format);
  };
  return wrap(dispatch_resize_as_(_r.tensor(0), _r.tensor(1), _r.memoryformatOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// resize_as_sparse_
static PyObject * THPVariable_resize_as_sparse_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "resize_as_sparse_(Tensor input, Tensor the_template)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::resize_as_sparse_(Tensor(a!) self, Tensor the_template) -> Tensor(a!)
  
  auto dispatch_resize_as_sparse_ = [](const at::Tensor & self, const at::Tensor & the_template) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.resize_as_sparse_(the_template);
  };
  return wrap(dispatch_resize_as_sparse_(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// zero_
static PyObject * THPVariable_zero_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "zero_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::zero_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_zero_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.zero_();
  };
  return wrap(dispatch_zero_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// sub
static PyObject * THPVariable_sub(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sub(Tensor input, Scalar alpha, Tensor other, *, Tensor out=None)|deprecated",
    "sub(Tensor input, Tensor other, *, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // [deprecated] aten::sub(Tensor self, Scalar alpha, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_sub = [](at::Tensor out, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.sub(other, alpha);
        };
        return wrap(dispatch_sub(_r.tensor(3), _r.tensor(0), _r.scalar(1), _r.tensor(2)));
      } else {
        // [deprecated] aten::sub(Tensor self, Scalar alpha, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_sub_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::sub_out(out, self, other, alpha);
        };
        return wrap(dispatch_sub_out(_r.tensor(3), _r.tensor(0), _r.scalar(1), _r.tensor(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::sub.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor
        
        auto dispatch_sub = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.sub(other, alpha);
        };
        return wrap(dispatch_sub(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
      } else {
        // aten::sub.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_sub_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::sub_out(out, self, other, alpha);
        };
        return wrap(dispatch_sub_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.scalar(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// subtract
static PyObject * THPVariable_subtract(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "subtract(Tensor input, Tensor other, *, Scalar alpha=1, Tensor out=None)",
    "subtract(Tensor input, Scalar other, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::subtract.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor
        
        auto dispatch_subtract = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.subtract(other, alpha);
        };
        return wrap(dispatch_subtract(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
      } else {
        // aten::subtract.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_subtract_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::subtract_out(out, self, other, alpha);
        };
        return wrap(dispatch_subtract_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.scalar(2)));
      }
    }
    case 1: {
      // aten::subtract.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor
      
      auto dispatch_subtract = [](const at::Tensor & self, const at::Scalar & other, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.subtract(other, alpha);
      };
      return wrap(dispatch_subtract(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// rsub
static PyObject * THPVariable_rsub(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rsub(Tensor input, Tensor other, *, Scalar alpha=1)",
    "rsub(Tensor input, Scalar other, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::rsub.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor
      
      auto dispatch_rsub = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::rsub(self, other, alpha);
      };
      return wrap(dispatch_rsub(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
    }
    case 1: {
      // aten::rsub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor
      
      auto dispatch_rsub = [](const at::Tensor & self, const at::Scalar & other, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::rsub(self, other, alpha);
      };
      return wrap(dispatch_rsub(_r.tensor(0), _r.scalar(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// heaviside
static PyObject * THPVariable_heaviside(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "heaviside(Tensor input, Tensor values, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::heaviside(Tensor self, Tensor values) -> Tensor
    
    auto dispatch_heaviside = [](const at::Tensor & self, const at::Tensor & values) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.heaviside(values);
    };
    return wrap(dispatch_heaviside(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::heaviside.out(Tensor self, Tensor values, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_heaviside_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & values) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::heaviside_out(out, self, values);
    };
    return wrap(dispatch_heaviside_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addmm
static PyObject * THPVariable_addmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addmm(Scalar beta, Tensor input, Scalar alpha, Tensor mat1, Tensor mat2, *, Tensor out=None)|deprecated",
    "addmm(Scalar beta, Tensor input, Tensor mat1, Tensor mat2, *, Tensor out=None)|deprecated",
    "addmm(Tensor input, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // [deprecated] aten::addmm(Scalar beta, Tensor self, Scalar alpha, Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmm = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addmm(mat1, mat2, beta, alpha);
        };
        return wrap(dispatch_addmm(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      } else {
        // [deprecated] aten::addmm(Scalar beta, Tensor self, Scalar alpha, Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmm_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addmm_out(out, self, mat1, mat2, beta, alpha);
        };
        return wrap(dispatch_addmm_out(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // [deprecated] aten::addmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmm = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addmm(mat1, mat2, beta, 1);
        };
        return wrap(dispatch_addmm(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::addmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmm_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addmm_out(out, self, mat1, mat2, beta, 1);
        };
        return wrap(dispatch_addmm_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor
        
        auto dispatch_addmm = [](const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addmm(mat1, mat2, beta, alpha);
        };
        return wrap(dispatch_addmm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      } else {
        // aten::addmm.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addmm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addmm_out(out, self, mat1, mat2, beta, alpha);
        };
        return wrap(dispatch_addmm_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _addmm_activation
static PyObject * THPVariable__addmm_activation(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_addmm_activation(Tensor input, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, bool use_gelu=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(6)) {
    // aten::_addmm_activation(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, bool use_gelu=False) -> Tensor
    
    auto dispatch__addmm_activation = [](const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2, const at::Scalar & beta, const at::Scalar & alpha, bool use_gelu) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self._addmm_activation(mat1, mat2, beta, alpha, use_gelu);
    };
    return wrap(dispatch__addmm_activation(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4), _r.toBool(5)));
  } else {
    // aten::_addmm_activation.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, bool use_gelu=False, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__addmm_activation_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat1, const at::Tensor & mat2, const at::Scalar & beta, const at::Scalar & alpha, bool use_gelu) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_addmm_activation_out(out, self, mat1, mat2, beta, alpha, use_gelu);
    };
    return wrap(dispatch__addmm_activation_out(_r.tensor(6), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4), _r.toBool(5)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_mm
static PyObject * THPVariable__scaled_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_scaled_mm(Tensor input, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(8)) {
    // aten::_scaled_mm(Tensor self, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False) -> Tensor
    
    auto dispatch__scaled_mm = [](const at::Tensor & self, const at::Tensor & mat2, const at::Tensor & scale_a, const at::Tensor & scale_b, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & scale_result, ::std::optional<at::ScalarType> out_dtype, bool use_fast_accum) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_scaled_mm(self, mat2, scale_a, scale_b, bias, scale_result, out_dtype, use_fast_accum);
    };
    return wrap(dispatch__scaled_mm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5), _r.scalartypeOptional(6), _r.toBool(7)));
  } else {
    // aten::_scaled_mm.out(Tensor self, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__scaled_mm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mat2, const at::Tensor & scale_a, const at::Tensor & scale_b, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & scale_result, ::std::optional<at::ScalarType> out_dtype, bool use_fast_accum) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_scaled_mm_out(out, self, mat2, scale_a, scale_b, bias, scale_result, out_dtype, use_fast_accum);
    };
    return wrap(dispatch__scaled_mm_out(_r.tensor(8), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5), _r.scalartypeOptional(6), _r.toBool(7)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_grouped_mm
static PyObject * THPVariable__scaled_grouped_mm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_scaled_grouped_mm(Tensor input, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? offs=None, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_grouped_mm(Tensor self, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? offs=None, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False) -> Tensor
  
  auto dispatch__scaled_grouped_mm = [](const at::Tensor & self, const at::Tensor & mat2, const at::Tensor & scale_a, const at::Tensor & scale_b, const ::std::optional<at::Tensor> & offs, const ::std::optional<at::Tensor> & bias, const ::std::optional<at::Tensor> & scale_result, ::std::optional<at::ScalarType> out_dtype, bool use_fast_accum) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_grouped_mm(self, mat2, scale_a, scale_b, offs, bias, scale_result, out_dtype, use_fast_accum);
  };
  return wrap(dispatch__scaled_grouped_mm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5), _r.optionalTensor(6), _r.scalartypeOptional(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_sparse_coo_tensor_args
static PyObject * THPVariable__validate_sparse_coo_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_sparse_coo_tensor_args(Tensor indices, Tensor values, IntArrayRef size, bool? is_coalesced=None)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_sparse_coo_tensor_args(Tensor indices, Tensor values, int[] size, bool? is_coalesced=None) -> ()
  
  auto dispatch__validate_sparse_coo_tensor_args = [](const at::Tensor & indices, const at::Tensor & values, at::IntArrayRef size, ::std::optional<bool> is_coalesced) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_sparse_coo_tensor_args(indices, values, size, is_coalesced);
  };
  dispatch__validate_sparse_coo_tensor_args(_r.tensor(0), _r.tensor(1), _r.intlist(2), _r.toBoolOptional(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_sparse_compressed_tensor_args
static PyObject * THPVariable__validate_sparse_compressed_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_sparse_compressed_tensor_args(Tensor compressed_indices, Tensor plain_indices, Tensor values, IntArrayRef size, Layout layout)",
  }, /*traceable=*/false);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_sparse_compressed_tensor_args(Tensor compressed_indices, Tensor plain_indices, Tensor values, int[] size, Layout layout) -> ()
  
  auto dispatch__validate_sparse_compressed_tensor_args = [](const at::Tensor & compressed_indices, const at::Tensor & plain_indices, const at::Tensor & values, at::IntArrayRef size, at::Layout layout) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_sparse_compressed_tensor_args(compressed_indices, plain_indices, values, size, layout);
  };
  dispatch__validate_sparse_compressed_tensor_args(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.intlist(3), _r.layout(4));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_sparse_csr_tensor_args
static PyObject * THPVariable__validate_sparse_csr_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_sparse_csr_tensor_args(Tensor crow_indices, Tensor col_indices, Tensor values, IntArrayRef size)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_sparse_csr_tensor_args(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size) -> ()
  
  auto dispatch__validate_sparse_csr_tensor_args = [](const at::Tensor & crow_indices, const at::Tensor & col_indices, const at::Tensor & values, at::IntArrayRef size) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_sparse_csr_tensor_args(crow_indices, col_indices, values, size);
  };
  dispatch__validate_sparse_csr_tensor_args(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.intlist(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_sparse_csc_tensor_args
static PyObject * THPVariable__validate_sparse_csc_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_sparse_csc_tensor_args(Tensor ccol_indices, Tensor row_indices, Tensor values, IntArrayRef size)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_sparse_csc_tensor_args(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size) -> ()
  
  auto dispatch__validate_sparse_csc_tensor_args = [](const at::Tensor & ccol_indices, const at::Tensor & row_indices, const at::Tensor & values, at::IntArrayRef size) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_sparse_csc_tensor_args(ccol_indices, row_indices, values, size);
  };
  dispatch__validate_sparse_csc_tensor_args(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.intlist(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_sparse_bsr_tensor_args
static PyObject * THPVariable__validate_sparse_bsr_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_sparse_bsr_tensor_args(Tensor crow_indices, Tensor col_indices, Tensor values, IntArrayRef size)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_sparse_bsr_tensor_args(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size) -> ()
  
  auto dispatch__validate_sparse_bsr_tensor_args = [](const at::Tensor & crow_indices, const at::Tensor & col_indices, const at::Tensor & values, at::IntArrayRef size) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_sparse_bsr_tensor_args(crow_indices, col_indices, values, size);
  };
  dispatch__validate_sparse_bsr_tensor_args(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.intlist(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _validate_sparse_bsc_tensor_args
static PyObject * THPVariable__validate_sparse_bsc_tensor_args(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_validate_sparse_bsc_tensor_args(Tensor ccol_indices, Tensor row_indices, Tensor values, IntArrayRef size)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_validate_sparse_bsc_tensor_args(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size) -> ()
  
  auto dispatch__validate_sparse_bsc_tensor_args = [](const at::Tensor & ccol_indices, const at::Tensor & row_indices, const at::Tensor & values, at::IntArrayRef size) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_validate_sparse_bsc_tensor_args(ccol_indices, row_indices, values, size);
  };
  dispatch__validate_sparse_bsc_tensor_args(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.intlist(3));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _to_cpu
static PyObject * THPVariable__to_cpu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_to_cpu(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_to_cpu(Tensor[] tensors) -> Tensor[]
  
  auto dispatch__to_cpu = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_to_cpu(tensors);
  };
  return wrap(dispatch__to_cpu(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _coalesce
static PyObject * THPVariable__coalesce(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_coalesce(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_coalesce(Tensor self) -> Tensor
  
  auto dispatch__coalesce = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_coalesce(self);
  };
  return wrap(dispatch__coalesce(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// hspmm
static PyObject * THPVariable_hspmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hspmm(Tensor mat1, Tensor mat2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::hspmm(Tensor mat1, Tensor mat2) -> Tensor
    
    auto dispatch_hspmm = [](const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::hspmm(mat1, mat2);
    };
    return wrap(dispatch_hspmm(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::hspmm.out(Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_hspmm_out = [](at::Tensor out, const at::Tensor & mat1, const at::Tensor & mat2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::hspmm_out(out, mat1, mat2);
    };
    return wrap(dispatch_hspmm_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// unbind
static PyObject * THPVariable_unbind(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unbind(Tensor input, int64_t dim=0)",
    "unbind(Tensor input, Dimname dim)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::unbind.int(Tensor(a -> *) self, int dim=0) -> Tensor(a)[]
      
      auto dispatch_unbind = [](const at::Tensor & self, int64_t dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.unbind(dim);
      };
      return wrap(dispatch_unbind(_r.tensor(0), _r.toInt64(1)));
    }
    case 1: {
      // aten::unbind.Dimname(Tensor(a -> *) self, Dimname dim) -> Tensor(a)[]
      
      auto dispatch_unbind = [](const at::Tensor & self, at::Dimname dim) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return self.unbind(dim);
      };
      return wrap(dispatch_unbind(_r.tensor(0), _r.dimname(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _to_sparse_semi_structured
static PyObject * THPVariable__to_sparse_semi_structured(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_to_sparse_semi_structured(Tensor dense)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_to_sparse_semi_structured(Tensor dense) -> (Tensor, Tensor)
  
  auto dispatch__to_sparse_semi_structured = [](const at::Tensor & dense) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_to_sparse_semi_structured(dense);
  };
  return wrap(dispatch__to_sparse_semi_structured(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantize_per_tensor_dynamic
static PyObject * THPVariable_quantize_per_tensor_dynamic(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantize_per_tensor_dynamic(Tensor input, ScalarType dtype, bool reduce_range)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantize_per_tensor_dynamic(Tensor self, ScalarType dtype, bool reduce_range) -> Tensor
  
  auto dispatch_quantize_per_tensor_dynamic = [](const at::Tensor & self, at::ScalarType dtype, bool reduce_range) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantize_per_tensor_dynamic(self, dtype, reduce_range);
  };
  return wrap(dispatch_quantize_per_tensor_dynamic(_r.tensor(0), _r.scalartype(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// quantize_per_tensor
static PyObject * THPVariable_quantize_per_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantize_per_tensor(Tensor input, Tensor scale, Tensor zero_point, ScalarType dtype)",
    "quantize_per_tensor(Tensor input, double scale, int64_t zero_point, ScalarType dtype)",
    "quantize_per_tensor(TensorList tensors, Tensor scales, Tensor zero_points, ScalarType dtype)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensor
      
      auto dispatch_quantize_per_tensor = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, at::ScalarType dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::quantize_per_tensor(self, scale, zero_point, dtype);
      };
      return wrap(dispatch_quantize_per_tensor(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalartype(3)));
    }
    case 1: {
      // aten::quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensor
      
      auto dispatch_quantize_per_tensor = [](const at::Tensor & self, double scale, int64_t zero_point, at::ScalarType dtype) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::quantize_per_tensor(self, scale, zero_point, dtype);
      };
      return wrap(dispatch_quantize_per_tensor(_r.tensor(0), _r.toDouble(1), _r.toInt64(2), _r.scalartype(3)));
    }
    case 2: {
      // aten::quantize_per_tensor.tensors(Tensor[] tensors, Tensor scales, Tensor zero_points, ScalarType dtype) -> Tensor[]
      
      auto dispatch_quantize_per_tensor = [](at::TensorList tensors, const at::Tensor & scales, const at::Tensor & zero_points, at::ScalarType dtype) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::quantize_per_tensor(tensors, scales, zero_points, dtype);
      };
      return wrap(dispatch_quantize_per_tensor(_r.tensorlist(0), _r.tensor(1), _r.tensor(2), _r.scalartype(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantize_per_channel
static PyObject * THPVariable_quantize_per_channel(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantize_per_channel(Tensor input, Tensor scales, Tensor zero_points, int64_t axis, ScalarType dtype)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantize_per_channel(Tensor self, Tensor scales, Tensor zero_points, int axis, ScalarType dtype) -> Tensor
  
  auto dispatch_quantize_per_channel = [](const at::Tensor & self, const at::Tensor & scales, const at::Tensor & zero_points, int64_t axis, at::ScalarType dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantize_per_channel(self, scales, zero_points, axis, dtype);
  };
  return wrap(dispatch_quantize_per_channel(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.scalartype(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// dequantize
static PyObject * THPVariable_dequantize(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dequantize(Tensor input)",
    "dequantize(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::dequantize.self(Tensor self) -> Tensor
      
      auto dispatch_dequantize = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.dequantize();
      };
      return wrap(dispatch_dequantize(_r.tensor(0)));
    }
    case 1: {
      // aten::dequantize.tensors(Tensor[] tensors) -> Tensor[]
      
      auto dispatch_dequantize = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::dequantize(tensors);
      };
      return wrap(dispatch_dequantize(_r.tensorlist(0)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// q_scale
static PyObject * THPVariable_q_scale(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "q_scale(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::q_scale(Tensor self) -> float
  
  auto dispatch_q_scale = [](const at::Tensor & self) -> double {
    pybind11::gil_scoped_release no_gil;
    return self.q_scale();
  };
  return wrap(dispatch_q_scale(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// q_zero_point
static PyObject * THPVariable_q_zero_point(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "q_zero_point(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::q_zero_point(Tensor self) -> int
  
  auto dispatch_q_zero_point = [](const at::Tensor & self) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return self.q_zero_point();
  };
  return wrap(dispatch_q_zero_point(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// q_per_channel_scales
static PyObject * THPVariable_q_per_channel_scales(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "q_per_channel_scales(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::q_per_channel_scales(Tensor self) -> Tensor
  
  auto dispatch_q_per_channel_scales = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.q_per_channel_scales();
  };
  return wrap(dispatch_q_per_channel_scales(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// q_per_channel_zero_points
static PyObject * THPVariable_q_per_channel_zero_points(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "q_per_channel_zero_points(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::q_per_channel_zero_points(Tensor self) -> Tensor
  
  auto dispatch_q_per_channel_zero_points = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.q_per_channel_zero_points();
  };
  return wrap(dispatch_q_per_channel_zero_points(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// q_per_channel_axis
static PyObject * THPVariable_q_per_channel_axis(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "q_per_channel_axis(Tensor input)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::q_per_channel_axis(Tensor self) -> int
  
  auto dispatch_q_per_channel_axis = [](const at::Tensor & self) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return self.q_per_channel_axis();
  };
  return wrap(dispatch_q_per_channel_axis(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// int_repr
static PyObject * THPVariable_int_repr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "int_repr(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::int_repr(Tensor self) -> Tensor
  
  auto dispatch_int_repr = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.int_repr();
  };
  return wrap(dispatch_int_repr(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _make_per_tensor_quantized_tensor
static PyObject * THPVariable__make_per_tensor_quantized_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_make_per_tensor_quantized_tensor(Tensor input, double scale, int64_t zero_point)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_make_per_tensor_quantized_tensor(Tensor self, float scale, int zero_point) -> Tensor
  
  auto dispatch__make_per_tensor_quantized_tensor = [](const at::Tensor & self, double scale, int64_t zero_point) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_make_per_tensor_quantized_tensor(self, scale, zero_point);
  };
  return wrap(dispatch__make_per_tensor_quantized_tensor(_r.tensor(0), _r.toDouble(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _make_per_channel_quantized_tensor
static PyObject * THPVariable__make_per_channel_quantized_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_make_per_channel_quantized_tensor(Tensor input, Tensor scale, Tensor zero_point, int64_t axis)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_make_per_channel_quantized_tensor(Tensor self, Tensor scale, Tensor zero_point, int axis) -> Tensor
  
  auto dispatch__make_per_channel_quantized_tensor = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, int64_t axis) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_make_per_channel_quantized_tensor(self, scale, zero_point, axis);
  };
  return wrap(dispatch__make_per_channel_quantized_tensor(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// fake_quantize_per_tensor_affine
static PyObject * THPVariable_fake_quantize_per_tensor_affine(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fake_quantize_per_tensor_affine(Tensor input, Tensor scale, Tensor zero_point, int64_t quant_min, int64_t quant_max)",
    "fake_quantize_per_tensor_affine(Tensor input, double scale, int64_t zero_point, int64_t quant_min, int64_t quant_max)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::fake_quantize_per_tensor_affine.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, int quant_min, int quant_max) -> Tensor
      
      auto dispatch_fake_quantize_per_tensor_affine = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, int64_t quant_min, int64_t quant_max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::fake_quantize_per_tensor_affine(self, scale, zero_point, quant_min, quant_max);
      };
      return wrap(dispatch_fake_quantize_per_tensor_affine(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4)));
    }
    case 1: {
      // aten::fake_quantize_per_tensor_affine(Tensor self, float scale, int zero_point, int quant_min, int quant_max) -> Tensor
      
      auto dispatch_fake_quantize_per_tensor_affine = [](const at::Tensor & self, double scale, int64_t zero_point, int64_t quant_min, int64_t quant_max) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::fake_quantize_per_tensor_affine(self, scale, zero_point, quant_min, quant_max);
      };
      return wrap(dispatch_fake_quantize_per_tensor_affine(_r.tensor(0), _r.toDouble(1), _r.toInt64(2), _r.toInt64(3), _r.toInt64(4)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fake_quantize_per_tensor_affine_cachemask_tensor_qparams
static PyObject * THPVariable__fake_quantize_per_tensor_affine_cachemask_tensor_qparams(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__fake_quantize_per_tensor_affine_cachemask_tensor_qparams_structseq();
  static PythonArgParser parser({
    "_fake_quantize_per_tensor_affine_cachemask_tensor_qparams(Tensor input, Tensor scale, Tensor zero_point, Tensor fake_quant_enabled, int64_t quant_min, int64_t quant_max)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fake_quantize_per_tensor_affine_cachemask_tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, Tensor fake_quant_enabled, int quant_min, int quant_max) -> (Tensor output, Tensor mask)
  
  auto dispatch__fake_quantize_per_tensor_affine_cachemask_tensor_qparams = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, const at::Tensor & fake_quant_enabled, int64_t quant_min, int64_t quant_max) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_fake_quantize_per_tensor_affine_cachemask_tensor_qparams(self, scale, zero_point, fake_quant_enabled, quant_min, quant_max);
  };
  return wrap(NamedTuple, dispatch__fake_quantize_per_tensor_affine_cachemask_tensor_qparams(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.toInt64(4), _r.toInt64(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fake_quantize_learnable_per_tensor_affine
static PyObject * THPVariable__fake_quantize_learnable_per_tensor_affine(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fake_quantize_learnable_per_tensor_affine(Tensor input, Tensor scale, Tensor zero_point, int64_t quant_min, int64_t quant_max, double grad_factor=1.0)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fake_quantize_learnable_per_tensor_affine(Tensor self, Tensor scale, Tensor zero_point, int quant_min, int quant_max, float grad_factor=1.0) -> Tensor
  
  auto dispatch__fake_quantize_learnable_per_tensor_affine = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, int64_t quant_min, int64_t quant_max, double grad_factor) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_fake_quantize_learnable_per_tensor_affine(self, scale, zero_point, quant_min, quant_max, grad_factor);
  };
  return wrap(dispatch__fake_quantize_learnable_per_tensor_affine(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.toDouble(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fake_quantize_per_channel_affine
static PyObject * THPVariable_fake_quantize_per_channel_affine(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fake_quantize_per_channel_affine(Tensor input, Tensor scale, Tensor zero_point, int64_t axis, int64_t quant_min, int64_t quant_max)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fake_quantize_per_channel_affine(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max) -> Tensor
  
  auto dispatch_fake_quantize_per_channel_affine = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, int64_t axis, int64_t quant_min, int64_t quant_max) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fake_quantize_per_channel_affine(self, scale, zero_point, axis, quant_min, quant_max);
  };
  return wrap(dispatch_fake_quantize_per_channel_affine(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.toInt64(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fake_quantize_learnable_per_channel_affine
static PyObject * THPVariable__fake_quantize_learnable_per_channel_affine(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fake_quantize_learnable_per_channel_affine(Tensor input, Tensor scale, Tensor zero_point, int64_t axis, int64_t quant_min, int64_t quant_max, double grad_factor=1.0)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fake_quantize_learnable_per_channel_affine(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max, float grad_factor=1.0) -> Tensor
  
  auto dispatch__fake_quantize_learnable_per_channel_affine = [](const at::Tensor & self, const at::Tensor & scale, const at::Tensor & zero_point, int64_t axis, int64_t quant_min, int64_t quant_max, double grad_factor) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_fake_quantize_learnable_per_channel_affine(self, scale, zero_point, axis, quant_min, quant_max, grad_factor);
  };
  return wrap(dispatch__fake_quantize_learnable_per_channel_affine(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.toInt64(5), _r.toDouble(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fused_moving_avg_obs_fake_quant
static PyObject * THPVariable_fused_moving_avg_obs_fake_quant(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fused_moving_avg_obs_fake_quant(Tensor input, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, double averaging_const, int64_t quant_min, int64_t quant_max, int64_t ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False)",
  }, /*traceable=*/true);

  ParsedArgs<13> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::fused_moving_avg_obs_fake_quant(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> Tensor
  
  auto dispatch_fused_moving_avg_obs_fake_quant = [](const at::Tensor & self, const at::Tensor & observer_on, const at::Tensor & fake_quant_on, at::Tensor running_min, at::Tensor running_max, at::Tensor scale, at::Tensor zero_point, double averaging_const, int64_t quant_min, int64_t quant_max, int64_t ch_axis, bool per_row_fake_quant, bool symmetric_quant) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::fused_moving_avg_obs_fake_quant(self, observer_on, fake_quant_on, running_min, running_max, scale, zero_point, averaging_const, quant_min, quant_max, ch_axis, per_row_fake_quant, symmetric_quant);
  };
  return wrap(dispatch_fused_moving_avg_obs_fake_quant(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.toDouble(7), _r.toInt64(8), _r.toInt64(9), _r.toInt64(10), _r.toBool(11), _r.toBool(12)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fused_moving_avg_obs_fq_helper
static PyObject * THPVariable__fused_moving_avg_obs_fq_helper(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__fused_moving_avg_obs_fq_helper_structseq();
  static PythonArgParser parser({
    "_fused_moving_avg_obs_fq_helper(Tensor input, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, double averaging_const, int64_t quant_min, int64_t quant_max, int64_t ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False)",
  }, /*traceable=*/true);

  ParsedArgs<13> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask)
  
  auto dispatch__fused_moving_avg_obs_fq_helper = [](const at::Tensor & self, const at::Tensor & observer_on, const at::Tensor & fake_quant_on, at::Tensor running_min, at::Tensor running_max, at::Tensor scale, at::Tensor zero_point, double averaging_const, int64_t quant_min, int64_t quant_max, int64_t ch_axis, bool per_row_fake_quant, bool symmetric_quant) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_fused_moving_avg_obs_fq_helper(self, observer_on, fake_quant_on, running_min, running_max, scale, zero_point, averaging_const, quant_min, quant_max, ch_axis, per_row_fake_quant, symmetric_quant);
  };
  return wrap(NamedTuple, dispatch__fused_moving_avg_obs_fq_helper(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.toDouble(7), _r.toInt64(8), _r.toInt64(9), _r.toInt64(10), _r.toBool(11), _r.toBool(12)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _choose_qparams_per_tensor
static PyObject * THPVariable__choose_qparams_per_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_choose_qparams_per_tensor(Tensor input, bool reduce_range=False)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_choose_qparams_per_tensor(Tensor self, bool reduce_range=False) -> (float, int)
  
  auto dispatch__choose_qparams_per_tensor = [](const at::Tensor & self, bool reduce_range) -> ::std::tuple<double,int64_t> {
    pybind11::gil_scoped_release no_gil;
    return at::_choose_qparams_per_tensor(self, reduce_range);
  };
  return wrap(dispatch__choose_qparams_per_tensor(_r.tensor(0), _r.toBool(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _saturate_weight_to_fp16
static PyObject * THPVariable__saturate_weight_to_fp16(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_saturate_weight_to_fp16(Tensor weight)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_saturate_weight_to_fp16(Tensor weight) -> Tensor
  
  auto dispatch__saturate_weight_to_fp16 = [](const at::Tensor & weight) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_saturate_weight_to_fp16(weight);
  };
  return wrap(dispatch__saturate_weight_to_fp16(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// choose_qparams_optimized
static PyObject * THPVariable_choose_qparams_optimized(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "choose_qparams_optimized(Tensor input, int64_t numel, int64_t n_bins, double ratio, int64_t bit_width)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::choose_qparams_optimized(Tensor input, int numel, int n_bins, float ratio, int bit_width) -> (Tensor, Tensor)
  
  auto dispatch_choose_qparams_optimized = [](const at::Tensor & input, int64_t numel, int64_t n_bins, double ratio, int64_t bit_width) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::choose_qparams_optimized(input, numel, n_bins, ratio, bit_width);
  };
  return wrap(dispatch_choose_qparams_optimized(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toDouble(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// meshgrid
static PyObject * THPVariable_meshgrid(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "meshgrid(TensorList tensors)",
    "meshgrid(TensorList tensors, *, c10::string_view indexing)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::meshgrid(Tensor[] tensors) -> Tensor[]
      
      auto dispatch_meshgrid = [](at::TensorList tensors) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::meshgrid(tensors);
      };
      return wrap(dispatch_meshgrid(_r.tensorlist(0)));
    }
    case 1: {
      // aten::meshgrid.indexing(Tensor[] tensors, *, str indexing) -> Tensor[]
      
      auto dispatch_meshgrid = [](at::TensorList tensors, c10::string_view indexing) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::meshgrid(tensors, indexing);
      };
      return wrap(dispatch_meshgrid(_r.tensorlist(0), _r.stringView(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cartesian_prod
static PyObject * THPVariable_cartesian_prod(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cartesian_prod(TensorList tensors)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::cartesian_prod(Tensor[] tensors) -> Tensor
  
  auto dispatch_cartesian_prod = [](at::TensorList tensors) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::cartesian_prod(tensors);
  };
  return wrap(dispatch_cartesian_prod(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// combinations
static PyObject * THPVariable_combinations(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "combinations(Tensor input, int64_t r=2, bool with_replacement=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::combinations(Tensor self, int r=2, bool with_replacement=False) -> Tensor
  
  auto dispatch_combinations = [](const at::Tensor & self, int64_t r, bool with_replacement) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::combinations(self, r, with_replacement);
  };
  return wrap(dispatch_combinations(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// result_type
static PyObject * THPVariable_result_type(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "result_type(Tensor tensor, Tensor other)",
    "result_type(Scalar scalar, Tensor tensor)",
    "result_type(Tensor tensor, Scalar other)",
    "result_type(Scalar scalar1, Scalar scalar2)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::result_type.Tensor(Tensor tensor, Tensor other) -> ScalarType
      
      auto dispatch_result_type = [](const at::Tensor & tensor, const at::Tensor & other) -> at::ScalarType {
        pybind11::gil_scoped_release no_gil;
        return at::result_type(tensor, other);
      };
      return wrap(dispatch_result_type(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::result_type.Scalar_Tensor(Scalar scalar, Tensor tensor) -> ScalarType
      
      auto dispatch_result_type = [](const at::Scalar & scalar, const at::Tensor & tensor) -> at::ScalarType {
        pybind11::gil_scoped_release no_gil;
        return at::result_type(scalar, tensor);
      };
      return wrap(dispatch_result_type(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      // aten::result_type.Scalar(Tensor tensor, Scalar other) -> ScalarType
      
      auto dispatch_result_type = [](const at::Tensor & tensor, const at::Scalar & other) -> at::ScalarType {
        pybind11::gil_scoped_release no_gil;
        return at::result_type(tensor, other);
      };
      return wrap(dispatch_result_type(_r.tensor(0), _r.scalar(1)));
    }
    case 3: {
      // aten::result_type.Scalar_Scalar(Scalar scalar1, Scalar scalar2) -> ScalarType
      
      auto dispatch_result_type = [](const at::Scalar & scalar1, const at::Scalar & scalar2) -> at::ScalarType {
        pybind11::gil_scoped_release no_gil;
        return at::result_type(scalar1, scalar2);
      };
      return wrap(dispatch_result_type(_r.scalar(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// can_cast
static PyObject * THPVariable_can_cast(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "can_cast(ScalarType from_, ScalarType to)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::can_cast(ScalarType from_, ScalarType to) -> bool
  
  auto dispatch_can_cast = [](at::ScalarType from_, at::ScalarType to) -> bool {
    pybind11::gil_scoped_release no_gil;
    return at::can_cast(from_, to);
  };
  return wrap(dispatch_can_cast(_r.scalartype(0), _r.scalartype(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// promote_types
static PyObject * THPVariable_promote_types(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "promote_types(ScalarType type1, ScalarType type2)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::promote_types(ScalarType type1, ScalarType type2) -> ScalarType
  
  auto dispatch_promote_types = [](at::ScalarType type1, at::ScalarType type2) -> at::ScalarType {
    pybind11::gil_scoped_release no_gil;
    return at::promote_types(type1, type2);
  };
  return wrap(dispatch_promote_types(_r.scalartype(0), _r.scalartype(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _lstm_mps
static PyObject * THPVariable__lstm_mps(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_lstm_mps(Tensor input, TensorList hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_lstm_mps(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor)
  
  auto dispatch__lstm_mps = [](const at::Tensor & input, at::TensorList hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_lstm_mps(input, hx, params, has_biases, num_layers, dropout, train, bidirectional, batch_first);
  };
  return wrap(dispatch__lstm_mps(_r.tensor(0), _r.tensorlist(1), _r.tensorlist(2), _r.toBool(3), _r.toInt64(4), _r.toDouble(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// lstm
static PyObject * THPVariable_lstm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lstm(Tensor data, Tensor batch_sizes, TensorList hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional)",
    "lstm(Tensor input, TensorList hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::lstm.data(Tensor data, Tensor batch_sizes, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor, Tensor)
      
      auto dispatch_lstm = [](const at::Tensor & data, const at::Tensor & batch_sizes, at::TensorList hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::lstm(data, batch_sizes, hx, params, has_biases, num_layers, dropout, train, bidirectional);
      };
      return wrap(dispatch_lstm(_r.tensor(0), _r.tensor(1), _r.tensorlist(2), _r.tensorlist(3), _r.toBool(4), _r.toInt64(5), _r.toDouble(6), _r.toBool(7), _r.toBool(8)));
    }
    case 1: {
      // aten::lstm.input(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor, Tensor)
      
      auto dispatch_lstm = [](const at::Tensor & input, at::TensorList hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::lstm(input, hx, params, has_biases, num_layers, dropout, train, bidirectional, batch_first);
      };
      return wrap(dispatch_lstm(_r.tensor(0), _r.tensorlist(1), _r.tensorlist(2), _r.toBool(3), _r.toInt64(4), _r.toDouble(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// gru
static PyObject * THPVariable_gru(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gru(Tensor data, Tensor batch_sizes, Tensor hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional)",
    "gru(Tensor input, Tensor hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::gru.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor)
      
      auto dispatch_gru = [](const at::Tensor & data, const at::Tensor & batch_sizes, const at::Tensor & hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gru(data, batch_sizes, hx, params, has_biases, num_layers, dropout, train, bidirectional);
      };
      return wrap(dispatch_gru(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensorlist(3), _r.toBool(4), _r.toInt64(5), _r.toDouble(6), _r.toBool(7), _r.toBool(8)));
    }
    case 1: {
      // aten::gru.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor)
      
      auto dispatch_gru = [](const at::Tensor & input, const at::Tensor & hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::gru(input, hx, params, has_biases, num_layers, dropout, train, bidirectional, batch_first);
      };
      return wrap(dispatch_gru(_r.tensor(0), _r.tensor(1), _r.tensorlist(2), _r.toBool(3), _r.toInt64(4), _r.toDouble(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// rnn_tanh
static PyObject * THPVariable_rnn_tanh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rnn_tanh(Tensor data, Tensor batch_sizes, Tensor hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional)",
    "rnn_tanh(Tensor input, Tensor hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::rnn_tanh.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor)
      
      auto dispatch_rnn_tanh = [](const at::Tensor & data, const at::Tensor & batch_sizes, const at::Tensor & hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::rnn_tanh(data, batch_sizes, hx, params, has_biases, num_layers, dropout, train, bidirectional);
      };
      return wrap(dispatch_rnn_tanh(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensorlist(3), _r.toBool(4), _r.toInt64(5), _r.toDouble(6), _r.toBool(7), _r.toBool(8)));
    }
    case 1: {
      // aten::rnn_tanh.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor)
      
      auto dispatch_rnn_tanh = [](const at::Tensor & input, const at::Tensor & hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::rnn_tanh(input, hx, params, has_biases, num_layers, dropout, train, bidirectional, batch_first);
      };
      return wrap(dispatch_rnn_tanh(_r.tensor(0), _r.tensor(1), _r.tensorlist(2), _r.toBool(3), _r.toInt64(4), _r.toDouble(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// rnn_relu
static PyObject * THPVariable_rnn_relu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rnn_relu(Tensor data, Tensor batch_sizes, Tensor hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional)",
    "rnn_relu(Tensor input, Tensor hx, TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::rnn_relu.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor)
      
      auto dispatch_rnn_relu = [](const at::Tensor & data, const at::Tensor & batch_sizes, const at::Tensor & hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::rnn_relu(data, batch_sizes, hx, params, has_biases, num_layers, dropout, train, bidirectional);
      };
      return wrap(dispatch_rnn_relu(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensorlist(3), _r.toBool(4), _r.toInt64(5), _r.toDouble(6), _r.toBool(7), _r.toBool(8)));
    }
    case 1: {
      // aten::rnn_relu.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor)
      
      auto dispatch_rnn_relu = [](const at::Tensor & input, const at::Tensor & hx, at::TensorList params, bool has_biases, int64_t num_layers, double dropout, bool train, bool bidirectional, bool batch_first) -> ::std::tuple<at::Tensor,at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::rnn_relu(input, hx, params, has_biases, num_layers, dropout, train, bidirectional, batch_first);
      };
      return wrap(dispatch_rnn_relu(_r.tensor(0), _r.tensor(1), _r.tensorlist(2), _r.toBool(3), _r.toInt64(4), _r.toDouble(5), _r.toBool(6), _r.toBool(7), _r.toBool(8)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// lstm_cell
static PyObject * THPVariable_lstm_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lstm_cell(Tensor input, TensorList hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::lstm_cell(Tensor input, Tensor[] hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> (Tensor, Tensor)
  
  auto dispatch_lstm_cell = [](const at::Tensor & input, at::TensorList hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const ::std::optional<at::Tensor> & b_ih, const ::std::optional<at::Tensor> & b_hh) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::lstm_cell(input, hx, w_ih, w_hh, b_ih, b_hh);
  };
  return wrap(dispatch_lstm_cell(_r.tensor(0), _r.tensorlist(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// gru_cell
static PyObject * THPVariable_gru_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor
  
  auto dispatch_gru_cell = [](const at::Tensor & input, const at::Tensor & hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const ::std::optional<at::Tensor> & b_ih, const ::std::optional<at::Tensor> & b_hh) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::gru_cell(input, hx, w_ih, w_hh, b_ih, b_hh);
  };
  return wrap(dispatch_gru_cell(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rnn_tanh_cell
static PyObject * THPVariable_rnn_tanh_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor
  
  auto dispatch_rnn_tanh_cell = [](const at::Tensor & input, const at::Tensor & hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const ::std::optional<at::Tensor> & b_ih, const ::std::optional<at::Tensor> & b_hh) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::rnn_tanh_cell(input, hx, w_ih, w_hh, b_ih, b_hh);
  };
  return wrap(dispatch_rnn_tanh_cell(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// rnn_relu_cell
static PyObject * THPVariable_rnn_relu_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None)",
  }, /*traceable=*/false);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor
  
  auto dispatch_rnn_relu_cell = [](const at::Tensor & input, const at::Tensor & hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const ::std::optional<at::Tensor> & b_ih, const ::std::optional<at::Tensor> & b_hh) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::rnn_relu_cell(input, hx, w_ih, w_hh, b_ih, b_hh);
  };
  return wrap(dispatch_rnn_relu_cell(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.optionalTensor(4), _r.optionalTensor(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_lstm_cell
static PyObject * THPVariable_quantized_lstm_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_lstm_cell(Tensor input, TensorList hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh)",
  }, /*traceable=*/true);

  ParsedArgs<14> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_lstm_cell(Tensor input, Tensor[] hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> (Tensor, Tensor)
  
  auto dispatch_quantized_lstm_cell = [](const at::Tensor & input, at::TensorList hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const at::Tensor & b_ih, const at::Tensor & b_hh, const at::Tensor & packed_ih, const at::Tensor & packed_hh, const at::Tensor & col_offsets_ih, const at::Tensor & col_offsets_hh, const at::Scalar & scale_ih, const at::Scalar & scale_hh, const at::Scalar & zero_point_ih, const at::Scalar & zero_point_hh) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_lstm_cell(input, hx, w_ih, w_hh, b_ih, b_hh, packed_ih, packed_hh, col_offsets_ih, col_offsets_hh, scale_ih, scale_hh, zero_point_ih, zero_point_hh);
  };
  return wrap(dispatch_quantized_lstm_cell(_r.tensor(0), _r.tensorlist(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.tensor(7), _r.tensor(8), _r.tensor(9), _r.scalar(10), _r.scalar(11), _r.scalar(12), _r.scalar(13)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_gru_cell
static PyObject * THPVariable_quantized_gru_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh)",
  }, /*traceable=*/true);

  ParsedArgs<14> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> Tensor
  
  auto dispatch_quantized_gru_cell = [](const at::Tensor & input, const at::Tensor & hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const at::Tensor & b_ih, const at::Tensor & b_hh, const at::Tensor & packed_ih, const at::Tensor & packed_hh, const at::Tensor & col_offsets_ih, const at::Tensor & col_offsets_hh, const at::Scalar & scale_ih, const at::Scalar & scale_hh, const at::Scalar & zero_point_ih, const at::Scalar & zero_point_hh) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_gru_cell(input, hx, w_ih, w_hh, b_ih, b_hh, packed_ih, packed_hh, col_offsets_ih, col_offsets_hh, scale_ih, scale_hh, zero_point_ih, zero_point_hh);
  };
  return wrap(dispatch_quantized_gru_cell(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.tensor(7), _r.tensor(8), _r.tensor(9), _r.scalar(10), _r.scalar(11), _r.scalar(12), _r.scalar(13)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_rnn_relu_cell
static PyObject * THPVariable_quantized_rnn_relu_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh)",
  }, /*traceable=*/true);

  ParsedArgs<14> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> Tensor
  
  auto dispatch_quantized_rnn_relu_cell = [](const at::Tensor & input, const at::Tensor & hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const at::Tensor & b_ih, const at::Tensor & b_hh, const at::Tensor & packed_ih, const at::Tensor & packed_hh, const at::Tensor & col_offsets_ih, const at::Tensor & col_offsets_hh, const at::Scalar & scale_ih, const at::Scalar & scale_hh, const at::Scalar & zero_point_ih, const at::Scalar & zero_point_hh) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_rnn_relu_cell(input, hx, w_ih, w_hh, b_ih, b_hh, packed_ih, packed_hh, col_offsets_ih, col_offsets_hh, scale_ih, scale_hh, zero_point_ih, zero_point_hh);
  };
  return wrap(dispatch_quantized_rnn_relu_cell(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.tensor(7), _r.tensor(8), _r.tensor(9), _r.scalar(10), _r.scalar(11), _r.scalar(12), _r.scalar(13)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// quantized_rnn_tanh_cell
static PyObject * THPVariable_quantized_rnn_tanh_cell(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantized_rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh)",
  }, /*traceable=*/true);

  ParsedArgs<14> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::quantized_rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> Tensor
  
  auto dispatch_quantized_rnn_tanh_cell = [](const at::Tensor & input, const at::Tensor & hx, const at::Tensor & w_ih, const at::Tensor & w_hh, const at::Tensor & b_ih, const at::Tensor & b_hh, const at::Tensor & packed_ih, const at::Tensor & packed_hh, const at::Tensor & col_offsets_ih, const at::Tensor & col_offsets_hh, const at::Scalar & scale_ih, const at::Scalar & scale_hh, const at::Scalar & zero_point_ih, const at::Scalar & zero_point_hh) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::quantized_rnn_tanh_cell(input, hx, w_ih, w_hh, b_ih, b_hh, packed_ih, packed_hh, col_offsets_ih, col_offsets_hh, scale_ih, scale_hh, zero_point_ih, zero_point_hh);
  };
  return wrap(dispatch_quantized_rnn_tanh_cell(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.tensor(7), _r.tensor(8), _r.tensor(9), _r.scalar(10), _r.scalar(11), _r.scalar(12), _r.scalar(13)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _pack_padded_sequence
static PyObject * THPVariable__pack_padded_sequence(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_pack_padded_sequence(Tensor input, Tensor lengths, bool batch_first)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_pack_padded_sequence(Tensor input, Tensor lengths, bool batch_first) -> (Tensor, Tensor)
  
  auto dispatch__pack_padded_sequence = [](const at::Tensor & input, const at::Tensor & lengths, bool batch_first) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_pack_padded_sequence(input, lengths, batch_first);
  };
  return wrap(dispatch__pack_padded_sequence(_r.tensor(0), _r.tensor(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _pad_packed_sequence
static PyObject * THPVariable__pad_packed_sequence(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_pad_packed_sequence(Tensor data, Tensor batch_sizes, bool batch_first, Scalar padding_value, int64_t total_length)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_pad_packed_sequence(Tensor data, Tensor batch_sizes, bool batch_first, Scalar padding_value, int total_length) -> (Tensor, Tensor)
  
  auto dispatch__pad_packed_sequence = [](const at::Tensor & data, const at::Tensor & batch_sizes, bool batch_first, const at::Scalar & padding_value, int64_t total_length) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_pad_packed_sequence(data, batch_sizes, batch_first, padding_value, total_length);
  };
  return wrap(dispatch__pad_packed_sequence(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.scalar(3), _r.toInt64(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// masked_fill
static PyObject * THPVariable_masked_fill(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "masked_fill(Tensor input, Tensor mask, Tensor value)",
    "masked_fill(Tensor input, Tensor mask, Scalar value)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::masked_fill.Tensor(Tensor self, Tensor mask, Tensor value) -> Tensor
      
      auto dispatch_masked_fill = [](const at::Tensor & self, const at::Tensor & mask, const at::Tensor & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.masked_fill(mask, value);
      };
      return wrap(dispatch_masked_fill(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
    }
    case 1: {
      // aten::masked_fill.Scalar(Tensor self, Tensor mask, Scalar value) -> Tensor
      
      auto dispatch_masked_fill = [](const at::Tensor & self, const at::Tensor & mask, const at::Scalar & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.masked_fill(mask, value);
      };
      return wrap(dispatch_masked_fill(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// masked_scatter
static PyObject * THPVariable_masked_scatter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "masked_scatter(Tensor input, Tensor mask, Tensor source)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::masked_scatter(Tensor self, Tensor mask, Tensor source) -> Tensor
  
  auto dispatch_masked_scatter = [](const at::Tensor & self, const at::Tensor & mask, const at::Tensor & source) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.masked_scatter(mask, source);
  };
  return wrap(dispatch_masked_scatter(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _masked_softmax
static PyObject * THPVariable__masked_softmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_masked_softmax(Tensor input, Tensor mask, int64_t? dim=None, int64_t? mask_type=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_masked_softmax(Tensor self, Tensor mask, int? dim=None, int? mask_type=None) -> Tensor
  
  auto dispatch__masked_softmax = [](const at::Tensor & self, const at::Tensor & mask, ::std::optional<int64_t> dim, ::std::optional<int64_t> mask_type) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_masked_softmax(self, mask, dim, mask_type);
  };
  return wrap(dispatch__masked_softmax(_r.tensor(0), _r.tensor(1), _r.toInt64Optional(2), _r.toInt64Optional(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// put
static PyObject * THPVariable_put(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "put(Tensor input, Tensor index, Tensor source, bool accumulate=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::put(Tensor self, Tensor index, Tensor source, bool accumulate=False) -> Tensor
  
  auto dispatch_put = [](const at::Tensor & self, const at::Tensor & index, const at::Tensor & source, bool accumulate) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.put(index, source, accumulate);
  };
  return wrap(dispatch_put(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// index_add
static PyObject * THPVariable_index_add(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_add(Tensor input, int64_t dim, Tensor index, Tensor source, *, Scalar alpha=1, Tensor out=None)",
    "index_add(Tensor input, Dimname dim, Tensor index, Tensor source, *, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // aten::index_add(Tensor self, int dim, Tensor index, Tensor source, *, Scalar alpha=1) -> Tensor
        
        auto dispatch_index_add = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & source, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.index_add(dim, index, source, alpha);
        };
        return wrap(dispatch_index_add(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.scalar(4)));
      } else {
        // aten::index_add.out(Tensor self, int dim, Tensor index, Tensor source, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_index_add_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & source, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::index_add_out(out, self, dim, index, source, alpha);
        };
        return wrap(dispatch_index_add_out(_r.tensor(5), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.scalar(4)));
      }
    }
    case 1: {
      // aten::index_add.dimname(Tensor self, Dimname dim, Tensor index, Tensor source, *, Scalar alpha=1) -> Tensor
      
      auto dispatch_index_add = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Tensor & source, const at::Scalar & alpha) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.index_add(dim, index, source, alpha);
      };
      return wrap(dispatch_index_add(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.tensor(3), _r.scalar(4)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// index_reduce
static PyObject * THPVariable_index_reduce(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_reduce(Tensor input, int64_t dim, Tensor index, Tensor source, c10::string_view reduce, *, bool include_self=True, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(6)) {
    // aten::index_reduce(Tensor self, int dim, Tensor index, Tensor source, str reduce, *, bool include_self=True) -> Tensor
    
    auto dispatch_index_reduce = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & source, c10::string_view reduce, bool include_self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.index_reduce(dim, index, source, reduce, include_self);
    };
    return wrap(dispatch_index_reduce(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.stringView(4), _r.toBool(5)));
  } else {
    // aten::index_reduce.out(Tensor self, int dim, Tensor index, Tensor source, str reduce, *, bool include_self=True, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_index_reduce_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & source, c10::string_view reduce, bool include_self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::index_reduce_out(out, self, dim, index, source, reduce, include_self);
    };
    return wrap(dispatch_index_reduce_out(_r.tensor(6), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.stringView(4), _r.toBool(5)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// index_fill
static PyObject * THPVariable_index_fill(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_fill(Tensor input, int64_t dim, Tensor index, Tensor value)",
    "index_fill(Tensor input, Dimname dim, Tensor index, Tensor value)",
    "index_fill(Tensor input, int64_t dim, Tensor index, Scalar value)",
    "index_fill(Tensor input, Dimname dim, Tensor index, Scalar value)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::index_fill.int_Tensor(Tensor self, int dim, Tensor index, Tensor value) -> Tensor
      
      auto dispatch_index_fill = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.index_fill(dim, index, value);
      };
      return wrap(dispatch_index_fill(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
    }
    case 1: {
      // aten::index_fill.Dimname_Tensor(Tensor self, Dimname dim, Tensor index, Tensor value) -> Tensor
      
      auto dispatch_index_fill = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Tensor & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.index_fill(dim, index, value);
      };
      return wrap(dispatch_index_fill(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.tensor(3)));
    }
    case 2: {
      // aten::index_fill.int_Scalar(Tensor self, int dim, Tensor index, Scalar value) -> Tensor
      
      auto dispatch_index_fill = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Scalar & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.index_fill(dim, index, value);
      };
      return wrap(dispatch_index_fill(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.scalar(3)));
    }
    case 3: {
      // aten::index_fill.Dimname_Scalar(Tensor self, Dimname dim, Tensor index, Scalar value) -> Tensor
      
      auto dispatch_index_fill = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Scalar & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.index_fill(dim, index, value);
      };
      return wrap(dispatch_index_fill(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.scalar(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// scatter
static PyObject * THPVariable_scatter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "scatter(Tensor input, int64_t dim, Tensor index, Tensor src, *, Tensor out=None)",
    "scatter(Tensor input, int64_t dim, Tensor index, Tensor src, *, c10::string_view reduce, Tensor out=None)",
    "scatter(Tensor input, Dimname dim, Tensor index, Tensor src)",
    "scatter(Tensor input, int64_t dim, Tensor index, Scalar value, *, Tensor out=None)",
    "scatter(Tensor input, int64_t dim, Tensor index, Scalar value, *, c10::string_view reduce, Tensor out=None)",
    "scatter(Tensor input, Dimname dim, Tensor index, Scalar value)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::scatter.src(Tensor self, int dim, Tensor index, Tensor src) -> Tensor
        
        auto dispatch_scatter = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.scatter(dim, index, src);
        };
        return wrap(dispatch_scatter(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // aten::scatter.src_out(Tensor self, int dim, Tensor index, Tensor src, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_scatter_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::scatter_out(out, self, dim, index, src);
        };
        return wrap(dispatch_scatter_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 1: {
      if (_r.isNone(5)) {
        // aten::scatter.reduce(Tensor self, int dim, Tensor index, Tensor src, *, str reduce) -> Tensor
        
        auto dispatch_scatter = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src, c10::string_view reduce) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.scatter(dim, index, src, reduce);
        };
        return wrap(dispatch_scatter(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.stringView(4)));
      } else {
        // aten::scatter.reduce_out(Tensor self, int dim, Tensor index, Tensor src, *, str reduce, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_scatter_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src, c10::string_view reduce) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::scatter_out(out, self, dim, index, src, reduce);
        };
        return wrap(dispatch_scatter_out(_r.tensor(5), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.stringView(4)));
      }
    }
    case 2: {
      // aten::scatter.dimname_src(Tensor self, Dimname dim, Tensor index, Tensor src) -> Tensor
      
      auto dispatch_scatter = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Tensor & src) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.scatter(dim, index, src);
      };
      return wrap(dispatch_scatter(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.tensor(3)));
    }
    case 3: {
      if (_r.isNone(4)) {
        // aten::scatter.value(Tensor self, int dim, Tensor index, Scalar value) -> Tensor
        
        auto dispatch_scatter = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Scalar & value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.scatter(dim, index, value);
        };
        return wrap(dispatch_scatter(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.scalar(3)));
      } else {
        // aten::scatter.value_out(Tensor self, int dim, Tensor index, Scalar value, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_scatter_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Scalar & value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::scatter_out(out, self, dim, index, value);
        };
        return wrap(dispatch_scatter_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.scalar(3)));
      }
    }
    case 4: {
      if (_r.isNone(5)) {
        // aten::scatter.value_reduce(Tensor self, int dim, Tensor index, Scalar value, *, str reduce) -> Tensor
        
        auto dispatch_scatter = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Scalar & value, c10::string_view reduce) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.scatter(dim, index, value, reduce);
        };
        return wrap(dispatch_scatter(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.scalar(3), _r.stringView(4)));
      } else {
        // aten::scatter.value_reduce_out(Tensor self, int dim, Tensor index, Scalar value, *, str reduce, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_scatter_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Scalar & value, c10::string_view reduce) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::scatter_out(out, self, dim, index, value, reduce);
        };
        return wrap(dispatch_scatter_out(_r.tensor(5), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.scalar(3), _r.stringView(4)));
      }
    }
    case 5: {
      // aten::scatter.dimname_value(Tensor self, Dimname dim, Tensor index, Scalar value) -> Tensor
      
      auto dispatch_scatter = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Scalar & value) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.scatter(dim, index, value);
      };
      return wrap(dispatch_scatter(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.scalar(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// scatter_add
static PyObject * THPVariable_scatter_add(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "scatter_add(Tensor input, int64_t dim, Tensor index, Tensor src, *, Tensor out=None)",
    "scatter_add(Tensor input, Dimname dim, Tensor index, Tensor src)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::scatter_add(Tensor self, int dim, Tensor index, Tensor src) -> Tensor
        
        auto dispatch_scatter_add = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.scatter_add(dim, index, src);
        };
        return wrap(dispatch_scatter_add(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // aten::scatter_add.out(Tensor self, int dim, Tensor index, Tensor src, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_scatter_add_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::scatter_add_out(out, self, dim, index, src);
        };
        return wrap(dispatch_scatter_add_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 1: {
      // aten::scatter_add.dimname(Tensor self, Dimname dim, Tensor index, Tensor src) -> Tensor
      
      auto dispatch_scatter_add = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, const at::Tensor & src) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.scatter_add(dim, index, src);
      };
      return wrap(dispatch_scatter_add(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.tensor(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// scatter_reduce
static PyObject * THPVariable_scatter_reduce(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "scatter_reduce(Tensor input, int64_t dim, Tensor index, Tensor src, c10::string_view reduce, *, bool include_self=True, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(6)) {
    // aten::scatter_reduce.two(Tensor self, int dim, Tensor index, Tensor src, str reduce, *, bool include_self=True) -> Tensor
    
    auto dispatch_scatter_reduce = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src, c10::string_view reduce, bool include_self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.scatter_reduce(dim, index, src, reduce, include_self);
    };
    return wrap(dispatch_scatter_reduce(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.stringView(4), _r.toBool(5)));
  } else {
    // aten::scatter_reduce.two_out(Tensor self, int dim, Tensor index, Tensor src, str reduce, *, bool include_self=True, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_scatter_reduce_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, const at::Tensor & src, c10::string_view reduce, bool include_self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::scatter_reduce_out(out, self, dim, index, src, reduce, include_self);
    };
    return wrap(dispatch_scatter_reduce_out(_r.tensor(6), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.tensor(3), _r.stringView(4), _r.toBool(5)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bitwise_and
static PyObject * THPVariable_bitwise_and(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bitwise_and(Tensor input, Tensor other, *, Tensor out=None)",
    "bitwise_and(Scalar self, Tensor other)",
    "bitwise_and(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::bitwise_and.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_bitwise_and = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_and(other);
        };
        return wrap(dispatch_bitwise_and(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::bitwise_and.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_and_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_and_out(out, self, other);
        };
        return wrap(dispatch_bitwise_and_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::bitwise_and.Scalar_Tensor(Scalar self, Tensor other) -> Tensor
      
      auto dispatch_bitwise_and = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::bitwise_and(self, other);
      };
      return wrap(dispatch_bitwise_and(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::bitwise_and.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_bitwise_and = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_and(other);
        };
        return wrap(dispatch_bitwise_and(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::bitwise_and.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_and_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_and_out(out, self, other);
        };
        return wrap(dispatch_bitwise_and_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// __and__
static PyObject * THPVariable___and__(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "__and__(Tensor input, Tensor other)",
    "__and__(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::__and__.Tensor(Tensor self, Tensor other) -> Tensor
      
      auto dispatch___and__ = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__and__(other);
      };
      return wrap(dispatch___and__(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::__and__.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch___and__ = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__and__(other);
      };
      return wrap(dispatch___and__(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bitwise_or
static PyObject * THPVariable_bitwise_or(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bitwise_or(Tensor input, Tensor other, *, Tensor out=None)",
    "bitwise_or(Scalar self, Tensor other)",
    "bitwise_or(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::bitwise_or.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_bitwise_or = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_or(other);
        };
        return wrap(dispatch_bitwise_or(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::bitwise_or.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_or_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_or_out(out, self, other);
        };
        return wrap(dispatch_bitwise_or_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::bitwise_or.Scalar_Tensor(Scalar self, Tensor other) -> Tensor
      
      auto dispatch_bitwise_or = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::bitwise_or(self, other);
      };
      return wrap(dispatch_bitwise_or(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::bitwise_or.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_bitwise_or = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_or(other);
        };
        return wrap(dispatch_bitwise_or(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::bitwise_or.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_or_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_or_out(out, self, other);
        };
        return wrap(dispatch_bitwise_or_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// __or__
static PyObject * THPVariable___or__(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "__or__(Tensor input, Tensor other)",
    "__or__(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::__or__.Tensor(Tensor self, Tensor other) -> Tensor
      
      auto dispatch___or__ = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__or__(other);
      };
      return wrap(dispatch___or__(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::__or__.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch___or__ = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__or__(other);
      };
      return wrap(dispatch___or__(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bitwise_xor
static PyObject * THPVariable_bitwise_xor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bitwise_xor(Tensor input, Tensor other, *, Tensor out=None)",
    "bitwise_xor(Scalar self, Tensor other)",
    "bitwise_xor(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::bitwise_xor.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_bitwise_xor = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_xor(other);
        };
        return wrap(dispatch_bitwise_xor(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::bitwise_xor.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_xor_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_xor_out(out, self, other);
        };
        return wrap(dispatch_bitwise_xor_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::bitwise_xor.Scalar_Tensor(Scalar self, Tensor other) -> Tensor
      
      auto dispatch_bitwise_xor = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::bitwise_xor(self, other);
      };
      return wrap(dispatch_bitwise_xor(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::bitwise_xor.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_bitwise_xor = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_xor(other);
        };
        return wrap(dispatch_bitwise_xor(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::bitwise_xor.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_xor_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_xor_out(out, self, other);
        };
        return wrap(dispatch_bitwise_xor_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// __xor__
static PyObject * THPVariable___xor__(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "__xor__(Tensor input, Tensor other)",
    "__xor__(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::__xor__.Tensor(Tensor self, Tensor other) -> Tensor
      
      auto dispatch___xor__ = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__xor__(other);
      };
      return wrap(dispatch___xor__(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::__xor__.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch___xor__ = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__xor__(other);
      };
      return wrap(dispatch___xor__(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// __lshift__
static PyObject * THPVariable___lshift__(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "__lshift__(Tensor input, Tensor other)",
    "__lshift__(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::__lshift__.Tensor(Tensor self, Tensor other) -> Tensor
      
      auto dispatch___lshift__ = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__lshift__(other);
      };
      return wrap(dispatch___lshift__(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::__lshift__.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch___lshift__ = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__lshift__(other);
      };
      return wrap(dispatch___lshift__(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bitwise_left_shift
static PyObject * THPVariable_bitwise_left_shift(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bitwise_left_shift(Tensor input, Tensor other, *, Tensor out=None)",
    "bitwise_left_shift(Scalar self, Tensor other)",
    "bitwise_left_shift(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::bitwise_left_shift.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_bitwise_left_shift = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_left_shift(other);
        };
        return wrap(dispatch_bitwise_left_shift(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::bitwise_left_shift.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_left_shift_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_left_shift_out(out, self, other);
        };
        return wrap(dispatch_bitwise_left_shift_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::bitwise_left_shift.Scalar_Tensor(Scalar self, Tensor other) -> Tensor
      
      auto dispatch_bitwise_left_shift = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::bitwise_left_shift(self, other);
      };
      return wrap(dispatch_bitwise_left_shift(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::bitwise_left_shift.Tensor_Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_bitwise_left_shift = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_left_shift(other);
        };
        return wrap(dispatch_bitwise_left_shift(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::bitwise_left_shift.Tensor_Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_left_shift_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_left_shift_out(out, self, other);
        };
        return wrap(dispatch_bitwise_left_shift_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// __rshift__
static PyObject * THPVariable___rshift__(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "__rshift__(Tensor input, Tensor other)",
    "__rshift__(Tensor input, Scalar other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::__rshift__.Tensor(Tensor self, Tensor other) -> Tensor
      
      auto dispatch___rshift__ = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__rshift__(other);
      };
      return wrap(dispatch___rshift__(_r.tensor(0), _r.tensor(1)));
    }
    case 1: {
      // aten::__rshift__.Scalar(Tensor self, Scalar other) -> Tensor
      
      auto dispatch___rshift__ = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.__rshift__(other);
      };
      return wrap(dispatch___rshift__(_r.tensor(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bitwise_right_shift
static PyObject * THPVariable_bitwise_right_shift(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bitwise_right_shift(Tensor input, Tensor other, *, Tensor out=None)",
    "bitwise_right_shift(Scalar self, Tensor other)",
    "bitwise_right_shift(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::bitwise_right_shift.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_bitwise_right_shift = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_right_shift(other);
        };
        return wrap(dispatch_bitwise_right_shift(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::bitwise_right_shift.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_right_shift_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_right_shift_out(out, self, other);
        };
        return wrap(dispatch_bitwise_right_shift_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::bitwise_right_shift.Scalar_Tensor(Scalar self, Tensor other) -> Tensor
      
      auto dispatch_bitwise_right_shift = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::bitwise_right_shift(self, other);
      };
      return wrap(dispatch_bitwise_right_shift(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::bitwise_right_shift.Tensor_Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_bitwise_right_shift = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.bitwise_right_shift(other);
        };
        return wrap(dispatch_bitwise_right_shift(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::bitwise_right_shift.Tensor_Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bitwise_right_shift_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bitwise_right_shift_out(out, self, other);
        };
        return wrap(dispatch_bitwise_right_shift_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addbmm
static PyObject * THPVariable_addbmm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addbmm(Scalar beta, Tensor input, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor out=None)|deprecated",
    "addbmm(Scalar beta, Tensor input, Tensor batch1, Tensor batch2, *, Tensor out=None)|deprecated",
    "addbmm(Tensor input, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // [deprecated] aten::addbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addbmm = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addbmm(batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_addbmm(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      } else {
        // [deprecated] aten::addbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addbmm_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Scalar & alpha, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addbmm_out(out, self, batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_addbmm_out(_r.tensor(5), _r.scalar(0), _r.tensor(1), _r.scalar(2), _r.tensor(3), _r.tensor(4)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // [deprecated] aten::addbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addbmm = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addbmm(batch1, batch2, beta, 1);
        };
        return wrap(dispatch_addbmm(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::addbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addbmm_out = [](at::Tensor out, const at::Scalar & beta, const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addbmm_out(out, self, batch1, batch2, beta, 1);
        };
        return wrap(dispatch_addbmm_out(_r.tensor(4), _r.scalar(0), _r.tensor(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 2: {
      if (_r.isNone(5)) {
        // aten::addbmm(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor
        
        auto dispatch_addbmm = [](const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addbmm(batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_addbmm(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      } else {
        // aten::addbmm.out(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addbmm_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & batch1, const at::Tensor & batch2, const at::Scalar & beta, const at::Scalar & alpha) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addbmm_out(out, self, batch1, batch2, beta, alpha);
        };
        return wrap(dispatch_addbmm_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3), _r.scalar(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// diag
static PyObject * THPVariable_diag(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diag(Tensor input, int64_t diagonal=0, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::diag(Tensor self, int diagonal=0) -> Tensor
    
    auto dispatch_diag = [](const at::Tensor & self, int64_t diagonal) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.diag(diagonal);
    };
    return wrap(dispatch_diag(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::diag.out(Tensor self, int diagonal=0, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_diag_out = [](at::Tensor out, const at::Tensor & self, int64_t diagonal) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::diag_out(out, self, diagonal);
    };
    return wrap(dispatch_diag_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cross
static PyObject * THPVariable_cross(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cross(Tensor input, Tensor other, int64_t? dim=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::cross(Tensor self, Tensor other, int? dim=None) -> Tensor
    
    auto dispatch_cross = [](const at::Tensor & self, const at::Tensor & other, ::std::optional<int64_t> dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.cross(other, dim);
    };
    return wrap(dispatch_cross(_r.tensor(0), _r.tensor(1), _r.toInt64Optional(2)));
  } else {
    // aten::cross.out(Tensor self, Tensor other, int? dim=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cross_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other, ::std::optional<int64_t> dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cross_out(out, self, other, dim);
    };
    return wrap(dispatch_cross_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.toInt64Optional(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// triu
static PyObject * THPVariable_triu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "triu(Tensor input, int64_t diagonal=0, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::triu(Tensor self, int diagonal=0) -> Tensor
    
    auto dispatch_triu = [](const at::Tensor & self, int64_t diagonal) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.triu(diagonal);
    };
    return wrap(dispatch_triu(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::triu.out(Tensor self, int diagonal=0, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_triu_out = [](at::Tensor out, const at::Tensor & self, int64_t diagonal) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::triu_out(out, self, diagonal);
    };
    return wrap(dispatch_triu_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tril
static PyObject * THPVariable_tril(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tril(Tensor input, int64_t diagonal=0, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::tril(Tensor self, int diagonal=0) -> Tensor
    
    auto dispatch_tril = [](const at::Tensor & self, int64_t diagonal) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.tril(diagonal);
    };
    return wrap(dispatch_tril(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::tril.out(Tensor self, int diagonal=0, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_tril_out = [](at::Tensor out, const at::Tensor & self, int64_t diagonal) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::tril_out(out, self, diagonal);
    };
    return wrap(dispatch_tril_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// tril_indices
static PyObject * THPVariable_tril_indices(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "tril_indices(int64_t row, int64_t col, int64_t offset=0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::tril_indices(int row, int col, int offset=0, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeWithDefault(3, at::kLong))
      .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(4))
      .requires_grad(_r.toBool(7))
      .pinned_memory(_r.toBool(6));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_tril_indices = [](int64_t row, int64_t col, int64_t offset, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::tril_indices(row, col, offset, options);
  };
  return wrap(dispatch_tril_indices(_r.toInt64(0), _r.toInt64(1), _r.toInt64(2), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// triu_indices
static PyObject * THPVariable_triu_indices(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "triu_indices(int64_t row, int64_t col, int64_t offset=0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::triu_indices(int row, int col, int offset=0, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  const auto options = TensorOptions()
      .dtype(_r.scalartypeWithDefault(3, at::kLong))
      .device(_r.deviceWithDefault(5, torch::tensors::get_default_device()))
      .layout(_r.layoutOptional(4))
      .requires_grad(_r.toBool(7))
      .pinned_memory(_r.toBool(6));
  torch::utils::maybe_initialize_device(options);
  
  auto dispatch_triu_indices = [](int64_t row, int64_t col, int64_t offset, at::TensorOptions options) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return torch::triu_indices(row, col, offset, options);
  };
  return wrap(dispatch_triu_indices(_r.toInt64(0), _r.toInt64(1), _r.toInt64(2), options));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// trace
static PyObject * THPVariable_trace(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "trace(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::trace(Tensor self) -> Tensor
  
  auto dispatch_trace = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.trace();
  };
  return wrap(dispatch_trace(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// ne
static PyObject * THPVariable_ne(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ne(Tensor input, Tensor other, *, Tensor out=None)",
    "ne(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::ne.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_ne = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.ne(other);
        };
        return wrap(dispatch_ne(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::ne.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_ne_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::ne_out(out, self, other);
        };
        return wrap(dispatch_ne_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::ne.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_ne = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.ne(other);
        };
        return wrap(dispatch_ne(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::ne.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_ne_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::ne_out(out, self, other);
        };
        return wrap(dispatch_ne_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// not_equal
static PyObject * THPVariable_not_equal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "not_equal(Tensor input, Tensor other, *, Tensor out=None)",
    "not_equal(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::not_equal.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_not_equal = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.not_equal(other);
        };
        return wrap(dispatch_not_equal(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::not_equal.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_not_equal_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::not_equal_out(out, self, other);
        };
        return wrap(dispatch_not_equal_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::not_equal.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_not_equal = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.not_equal(other);
        };
        return wrap(dispatch_not_equal(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::not_equal.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_not_equal_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::not_equal_out(out, self, other);
        };
        return wrap(dispatch_not_equal_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// eq
static PyObject * THPVariable_eq(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "eq(Tensor input, Tensor other, *, Tensor out=None)",
    "eq(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::eq.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_eq = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.eq(other);
        };
        return wrap(dispatch_eq(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::eq.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_eq_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::eq_out(out, self, other);
        };
        return wrap(dispatch_eq_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::eq.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_eq = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.eq(other);
        };
        return wrap(dispatch_eq(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::eq.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_eq_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::eq_out(out, self, other);
        };
        return wrap(dispatch_eq_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// ge
static PyObject * THPVariable_ge(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ge(Tensor input, Tensor other, *, Tensor out=None)",
    "ge(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::ge.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_ge = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.ge(other);
        };
        return wrap(dispatch_ge(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::ge.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_ge_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::ge_out(out, self, other);
        };
        return wrap(dispatch_ge_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::ge.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_ge = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.ge(other);
        };
        return wrap(dispatch_ge(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::ge.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_ge_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::ge_out(out, self, other);
        };
        return wrap(dispatch_ge_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// greater_equal
static PyObject * THPVariable_greater_equal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "greater_equal(Tensor input, Tensor other, *, Tensor out=None)",
    "greater_equal(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::greater_equal.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_greater_equal = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.greater_equal(other);
        };
        return wrap(dispatch_greater_equal(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::greater_equal.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_greater_equal_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::greater_equal_out(out, self, other);
        };
        return wrap(dispatch_greater_equal_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::greater_equal.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_greater_equal = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.greater_equal(other);
        };
        return wrap(dispatch_greater_equal(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::greater_equal.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_greater_equal_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::greater_equal_out(out, self, other);
        };
        return wrap(dispatch_greater_equal_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// le
static PyObject * THPVariable_le(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "le(Tensor input, Tensor other, *, Tensor out=None)",
    "le(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::le.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_le = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.le(other);
        };
        return wrap(dispatch_le(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::le.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_le_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::le_out(out, self, other);
        };
        return wrap(dispatch_le_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::le.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_le = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.le(other);
        };
        return wrap(dispatch_le(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::le.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_le_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::le_out(out, self, other);
        };
        return wrap(dispatch_le_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// less_equal
static PyObject * THPVariable_less_equal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "less_equal(Tensor input, Tensor other, *, Tensor out=None)",
    "less_equal(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::less_equal.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_less_equal = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.less_equal(other);
        };
        return wrap(dispatch_less_equal(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::less_equal.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_less_equal_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::less_equal_out(out, self, other);
        };
        return wrap(dispatch_less_equal_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::less_equal.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_less_equal = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.less_equal(other);
        };
        return wrap(dispatch_less_equal(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::less_equal.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_less_equal_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::less_equal_out(out, self, other);
        };
        return wrap(dispatch_less_equal_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// gt
static PyObject * THPVariable_gt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gt(Tensor input, Tensor other, *, Tensor out=None)",
    "gt(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::gt.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_gt = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.gt(other);
        };
        return wrap(dispatch_gt(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::gt.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_gt_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::gt_out(out, self, other);
        };
        return wrap(dispatch_gt_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::gt.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_gt = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.gt(other);
        };
        return wrap(dispatch_gt(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::gt.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_gt_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::gt_out(out, self, other);
        };
        return wrap(dispatch_gt_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// greater
static PyObject * THPVariable_greater(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "greater(Tensor input, Tensor other, *, Tensor out=None)",
    "greater(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::greater.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_greater = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.greater(other);
        };
        return wrap(dispatch_greater(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::greater.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_greater_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::greater_out(out, self, other);
        };
        return wrap(dispatch_greater_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::greater.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_greater = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.greater(other);
        };
        return wrap(dispatch_greater(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::greater.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_greater_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::greater_out(out, self, other);
        };
        return wrap(dispatch_greater_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// lt
static PyObject * THPVariable_lt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lt(Tensor input, Tensor other, *, Tensor out=None)",
    "lt(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::lt.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_lt = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.lt(other);
        };
        return wrap(dispatch_lt(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::lt.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_lt_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::lt_out(out, self, other);
        };
        return wrap(dispatch_lt_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::lt.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_lt = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.lt(other);
        };
        return wrap(dispatch_lt(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::lt.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_lt_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::lt_out(out, self, other);
        };
        return wrap(dispatch_lt_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// less
static PyObject * THPVariable_less(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "less(Tensor input, Tensor other, *, Tensor out=None)",
    "less(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::less.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_less = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.less(other);
        };
        return wrap(dispatch_less(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::less.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_less_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::less_out(out, self, other);
        };
        return wrap(dispatch_less_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::less.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_less = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.less(other);
        };
        return wrap(dispatch_less(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::less.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_less_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::less_out(out, self, other);
        };
        return wrap(dispatch_less_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// take
static PyObject * THPVariable_take(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "take(Tensor input, Tensor index, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::take(Tensor self, Tensor index) -> Tensor
    
    auto dispatch_take = [](const at::Tensor & self, const at::Tensor & index) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.take(index);
    };
    return wrap(dispatch_take(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::take.out(Tensor self, Tensor index, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_take_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & index) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::take_out(out, self, index);
    };
    return wrap(dispatch_take_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// take_along_dim
static PyObject * THPVariable_take_along_dim(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "take_along_dim(Tensor input, Tensor indices, int64_t? dim=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::take_along_dim(Tensor self, Tensor indices, int? dim=None) -> Tensor
    
    auto dispatch_take_along_dim = [](const at::Tensor & self, const at::Tensor & indices, ::std::optional<int64_t> dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.take_along_dim(indices, dim);
    };
    return wrap(dispatch_take_along_dim(_r.tensor(0), _r.tensor(1), _r.toInt64Optional(2)));
  } else {
    // aten::take_along_dim.out(Tensor self, Tensor indices, int? dim=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_take_along_dim_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & indices, ::std::optional<int64_t> dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::take_along_dim_out(out, self, indices, dim);
    };
    return wrap(dispatch_take_along_dim_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.toInt64Optional(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// index_select
static PyObject * THPVariable_index_select(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "index_select(Tensor input, int64_t dim, Tensor index, *, Tensor out=None)",
    "index_select(Tensor input, Dimname dim, Tensor index, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::index_select(Tensor self, int dim, Tensor index) -> Tensor
        
        auto dispatch_index_select = [](const at::Tensor & self, int64_t dim, const at::Tensor & index) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.index_select(dim, index);
        };
        return wrap(dispatch_index_select(_r.tensor(0), _r.toInt64(1), _r.tensor(2)));
      } else {
        // aten::index_select.out(Tensor self, int dim, Tensor index, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_index_select_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::index_select_out(out, self, dim, index);
        };
        return wrap(dispatch_index_select_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.tensor(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::index_select.dimname(Tensor self, Dimname dim, Tensor index) -> Tensor
        
        auto dispatch_index_select = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.index_select(dim, index);
        };
        return wrap(dispatch_index_select(_r.tensor(0), _r.dimname(1), _r.tensor(2)));
      } else {
        // aten::index_select.dimname_out(Tensor self, Dimname dim, Tensor index, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_index_select_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, const at::Tensor & index) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::index_select_out(out, self, dim, index);
        };
        return wrap(dispatch_index_select_out(_r.tensor(3), _r.tensor(0), _r.dimname(1), _r.tensor(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// masked_select
static PyObject * THPVariable_masked_select(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "masked_select(Tensor input, Tensor mask, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::masked_select(Tensor self, Tensor mask) -> Tensor
    
    auto dispatch_masked_select = [](const at::Tensor & self, const at::Tensor & mask) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.masked_select(mask);
    };
    return wrap(dispatch_masked_select(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::masked_select.out(Tensor self, Tensor mask, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_masked_select_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & mask) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::masked_select_out(out, self, mask);
    };
    return wrap(dispatch_masked_select_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// nonzero_static
static PyObject * THPVariable_nonzero_static(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nonzero_static(Tensor input, *, SymInt size, int64_t fill_value=-1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::nonzero_static(Tensor self, *, SymInt size, int fill_value=-1) -> Tensor
    
    auto dispatch_nonzero_static = [](const at::Tensor & self, c10::SymInt size, int64_t fill_value) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.nonzero_static_symint(size, fill_value);
    };
    return wrap(dispatch_nonzero_static(_r.tensor(0), _r.toSymInt(1), _r.toInt64(2)));
  } else {
    // aten::nonzero_static.out(Tensor self, *, SymInt size, int fill_value=-1, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_nonzero_static_out = [](at::Tensor out, const at::Tensor & self, c10::SymInt size, int64_t fill_value) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::nonzero_static_symint_out(out, self, size, fill_value);
    };
    return wrap(dispatch_nonzero_static_out(_r.tensor(3), _r.tensor(0), _r.toSymInt(1), _r.toInt64(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// argwhere
static PyObject * THPVariable_argwhere(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "argwhere(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::argwhere(Tensor self) -> Tensor
  
  auto dispatch_argwhere = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.argwhere();
  };
  return wrap(dispatch_argwhere(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// gather
static PyObject * THPVariable_gather(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "gather(Tensor input, int64_t dim, Tensor index, *, bool sparse_grad=False, Tensor out=None)",
    "gather(Tensor input, Dimname dim, Tensor index, *, bool sparse_grad=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::gather(Tensor self, int dim, Tensor index, *, bool sparse_grad=False) -> Tensor
        
        auto dispatch_gather = [](const at::Tensor & self, int64_t dim, const at::Tensor & index, bool sparse_grad) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.gather(dim, index, sparse_grad);
        };
        return wrap(dispatch_gather(_r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.toBool(3)));
      } else {
        // aten::gather.out(Tensor self, int dim, Tensor index, *, bool sparse_grad=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_gather_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, const at::Tensor & index, bool sparse_grad) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::gather_out(out, self, dim, index, sparse_grad);
        };
        return wrap(dispatch_gather_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.tensor(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::gather.dimname(Tensor self, Dimname dim, Tensor index, *, bool sparse_grad=False) -> Tensor
        
        auto dispatch_gather = [](const at::Tensor & self, at::Dimname dim, const at::Tensor & index, bool sparse_grad) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.gather(dim, index, sparse_grad);
        };
        return wrap(dispatch_gather(_r.tensor(0), _r.dimname(1), _r.tensor(2), _r.toBool(3)));
      } else {
        // aten::gather.dimname_out(Tensor self, Dimname dim, Tensor index, *, bool sparse_grad=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_gather_out = [](at::Tensor out, const at::Tensor & self, at::Dimname dim, const at::Tensor & index, bool sparse_grad) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::gather_out(out, self, dim, index, sparse_grad);
        };
        return wrap(dispatch_gather_out(_r.tensor(4), _r.tensor(0), _r.dimname(1), _r.tensor(2), _r.toBool(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addcmul
static PyObject * THPVariable_addcmul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addcmul(Tensor input, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor out=None)|deprecated",
    "addcmul(Tensor input, Tensor tensor1, Tensor tensor2, *, Scalar value=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // [deprecated] aten::addcmul(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addcmul = [](at::Tensor out, const at::Tensor & self, const at::Scalar & value, const at::Tensor & tensor1, const at::Tensor & tensor2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addcmul(tensor1, tensor2, value);
        };
        return wrap(dispatch_addcmul(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::addcmul(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addcmul_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & value, const at::Tensor & tensor1, const at::Tensor & tensor2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addcmul_out(out, self, tensor1, tensor2, value);
        };
        return wrap(dispatch_addcmul_out(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::addcmul(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor
        
        auto dispatch_addcmul = [](const at::Tensor & self, const at::Tensor & tensor1, const at::Tensor & tensor2, const at::Scalar & value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addcmul(tensor1, tensor2, value);
        };
        return wrap(dispatch_addcmul(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3)));
      } else {
        // aten::addcmul.out(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addcmul_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & tensor1, const at::Tensor & tensor2, const at::Scalar & value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addcmul_out(out, self, tensor1, tensor2, value);
        };
        return wrap(dispatch_addcmul_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// addcdiv
static PyObject * THPVariable_addcdiv(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "addcdiv(Tensor input, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor out=None)|deprecated",
    "addcdiv(Tensor input, Tensor tensor1, Tensor tensor2, *, Scalar value=1, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // [deprecated] aten::addcdiv(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addcdiv = [](at::Tensor out, const at::Tensor & self, const at::Scalar & value, const at::Tensor & tensor1, const at::Tensor & tensor2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addcdiv(tensor1, tensor2, value);
        };
        return wrap(dispatch_addcdiv(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.tensor(2), _r.tensor(3)));
      } else {
        // [deprecated] aten::addcdiv(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addcdiv_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & value, const at::Tensor & tensor1, const at::Tensor & tensor2) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addcdiv_out(out, self, tensor1, tensor2, value);
        };
        return wrap(dispatch_addcdiv_out(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.tensor(2), _r.tensor(3)));
      }
    }
    case 1: {
      if (_r.isNone(4)) {
        // aten::addcdiv(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor
        
        auto dispatch_addcdiv = [](const at::Tensor & self, const at::Tensor & tensor1, const at::Tensor & tensor2, const at::Scalar & value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.addcdiv(tensor1, tensor2, value);
        };
        return wrap(dispatch_addcdiv(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3)));
      } else {
        // aten::addcdiv.out(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_addcdiv_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & tensor1, const at::Tensor & tensor2, const at::Scalar & value) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::addcdiv_out(out, self, tensor1, tensor2, value);
        };
        return wrap(dispatch_addcdiv_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.scalar(3)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// triangular_solve
static PyObject * THPVariable_triangular_solve(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_triangular_solve_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_triangular_solve_structseq();
  static PythonArgParser parser({
    "triangular_solve(Tensor input, Tensor A, bool upper=True, bool transpose=False, bool unitriangular=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(5)) {
    // aten::triangular_solve(Tensor self, Tensor A, bool upper=True, bool transpose=False, bool unitriangular=False) -> (Tensor solution, Tensor cloned_coefficient)
    
    auto dispatch_triangular_solve = [](const at::Tensor & self, const at::Tensor & A, bool upper, bool transpose, bool unitriangular) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.triangular_solve(A, upper, transpose, unitriangular);
    };
    return wrap(NamedTuple1, dispatch_triangular_solve(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3), _r.toBool(4)));
  } else {
    // aten::triangular_solve.X(Tensor self, Tensor A, bool upper=True, bool transpose=False, bool unitriangular=False, *, Tensor(a!) X, Tensor(b!) M) -> (Tensor(a!) solution, Tensor(b!) cloned_coefficient)
    auto out = _r.tensorlist_n<2>(5);
    auto dispatch_triangular_solve_out = [](at::Tensor & X, at::Tensor & M, const at::Tensor & self, const at::Tensor & A, bool upper, bool transpose, bool unitriangular) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::triangular_solve_out(X, M, self, A, upper, transpose, unitriangular);
    };
    return wrap(NamedTuple, dispatch_triangular_solve_out(out[0], out[1], _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3), _r.toBool(4)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _linalg_check_errors
static PyObject * THPVariable__linalg_check_errors(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_linalg_check_errors(Tensor info, c10::string_view api_name, *, bool is_matrix)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_linalg_check_errors(Tensor info, str api_name, *, bool is_matrix) -> ()
  
  auto dispatch__linalg_check_errors = [](const at::Tensor & info, c10::string_view api_name, bool is_matrix) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_linalg_check_errors(info, api_name, is_matrix);
  };
  dispatch__linalg_check_errors(_r.tensor(0), _r.stringView(1), _r.toBool(2));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// svd
static PyObject * THPVariable_svd(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_svd_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_svd_structseq();
  static PythonArgParser parser({
    "svd(Tensor input, bool some=True, bool compute_uv=True, *, TensorList[3] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::svd(Tensor self, bool some=True, bool compute_uv=True) -> (Tensor U, Tensor S, Tensor V)
    
    auto dispatch_svd = [](const at::Tensor & self, bool some, bool compute_uv) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.svd(some, compute_uv);
    };
    return wrap(NamedTuple1, dispatch_svd(_r.tensor(0), _r.toBool(1), _r.toBool(2)));
  } else {
    // aten::svd.U(Tensor self, bool some=True, bool compute_uv=True, *, Tensor(a!) U, Tensor(b!) S, Tensor(c!) V) -> (Tensor(a!) U, Tensor(b!) S, Tensor(c!) V)
    auto out = _r.tensorlist_n<3>(3);
    auto dispatch_svd_out = [](at::Tensor & U, at::Tensor & S, at::Tensor & V, const at::Tensor & self, bool some, bool compute_uv) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::svd_out(U, S, V, self, some, compute_uv);
    };
    return wrap(NamedTuple, dispatch_svd_out(out[0], out[1], out[2], _r.tensor(0), _r.toBool(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// swapaxes
static PyObject * THPVariable_swapaxes(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "swapaxes(Tensor input, int64_t axis0, int64_t axis1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::swapaxes(Tensor(a) self, int axis0, int axis1) -> Tensor(a)
  
  auto dispatch_swapaxes = [](const at::Tensor & self, int64_t axis0, int64_t axis1) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.swapaxes(axis0, axis1);
  };
  return wrap(dispatch_swapaxes(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// swapdims
static PyObject * THPVariable_swapdims(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "swapdims(Tensor input, int64_t dim0, int64_t dim1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::swapdims(Tensor(a) self, int dim0, int dim1) -> Tensor(a)
  
  auto dispatch_swapdims = [](const at::Tensor & self, int64_t dim0, int64_t dim1) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.swapdims(dim0, dim1);
  };
  return wrap(dispatch_swapdims(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cholesky
static PyObject * THPVariable_cholesky(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cholesky(Tensor input, bool upper=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::cholesky(Tensor self, bool upper=False) -> Tensor
    
    auto dispatch_cholesky = [](const at::Tensor & self, bool upper) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.cholesky(upper);
    };
    return wrap(dispatch_cholesky(_r.tensor(0), _r.toBool(1)));
  } else {
    // aten::cholesky.out(Tensor self, bool upper=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cholesky_out = [](at::Tensor out, const at::Tensor & self, bool upper) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cholesky_out(out, self, upper);
    };
    return wrap(dispatch_cholesky_out(_r.tensor(2), _r.tensor(0), _r.toBool(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cholesky_solve
static PyObject * THPVariable_cholesky_solve(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cholesky_solve(Tensor input, Tensor input2, bool upper=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::cholesky_solve(Tensor self, Tensor input2, bool upper=False) -> Tensor
    
    auto dispatch_cholesky_solve = [](const at::Tensor & self, const at::Tensor & input2, bool upper) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.cholesky_solve(input2, upper);
    };
    return wrap(dispatch_cholesky_solve(_r.tensor(0), _r.tensor(1), _r.toBool(2)));
  } else {
    // aten::cholesky_solve.out(Tensor self, Tensor input2, bool upper=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cholesky_solve_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & input2, bool upper) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cholesky_solve_out(out, self, input2, upper);
    };
    return wrap(dispatch_cholesky_solve_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// cholesky_inverse
static PyObject * THPVariable_cholesky_inverse(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "cholesky_inverse(Tensor input, bool upper=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::cholesky_inverse(Tensor self, bool upper=False) -> Tensor
    
    auto dispatch_cholesky_inverse = [](const at::Tensor & self, bool upper) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.cholesky_inverse(upper);
    };
    return wrap(dispatch_cholesky_inverse(_r.tensor(0), _r.toBool(1)));
  } else {
    // aten::cholesky_inverse.out(Tensor self, bool upper=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_cholesky_inverse_out = [](at::Tensor out, const at::Tensor & self, bool upper) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::cholesky_inverse_out(out, self, upper);
    };
    return wrap(dispatch_cholesky_inverse_out(_r.tensor(2), _r.tensor(0), _r.toBool(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// qr
static PyObject * THPVariable_qr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_qr_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_qr_structseq();
  static PythonArgParser parser({
    "qr(Tensor input, bool some=True, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::qr(Tensor self, bool some=True) -> (Tensor Q, Tensor R)
    
    auto dispatch_qr = [](const at::Tensor & self, bool some) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.qr(some);
    };
    return wrap(NamedTuple1, dispatch_qr(_r.tensor(0), _r.toBool(1)));
  } else {
    // aten::qr.Q(Tensor self, bool some=True, *, Tensor(a!) Q, Tensor(b!) R) -> (Tensor(a!) Q, Tensor(b!) R)
    auto out = _r.tensorlist_n<2>(2);
    auto dispatch_qr_out = [](at::Tensor & Q, at::Tensor & R, const at::Tensor & self, bool some) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::qr_out(Q, R, self, some);
    };
    return wrap(NamedTuple, dispatch_qr_out(out[0], out[1], _r.tensor(0), _r.toBool(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// geqrf
static PyObject * THPVariable_geqrf(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_geqrf_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_geqrf_structseq();
  static PythonArgParser parser({
    "geqrf(Tensor input, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::geqrf(Tensor self) -> (Tensor a, Tensor tau)
    
    auto dispatch_geqrf = [](const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.geqrf();
    };
    return wrap(NamedTuple1, dispatch_geqrf(_r.tensor(0)));
  } else {
    // aten::geqrf.a(Tensor self, *, Tensor(a!) a, Tensor(b!) tau) -> (Tensor(a!) a, Tensor(b!) tau)
    auto out = _r.tensorlist_n<2>(1);
    auto dispatch_geqrf_out = [](at::Tensor & a, at::Tensor & tau, const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::geqrf_out(a, tau, self);
    };
    return wrap(NamedTuple, dispatch_geqrf_out(out[0], out[1], _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// orgqr
static PyObject * THPVariable_orgqr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "orgqr(Tensor input, Tensor input2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::orgqr(Tensor self, Tensor input2) -> Tensor
    
    auto dispatch_orgqr = [](const at::Tensor & self, const at::Tensor & input2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.orgqr(input2);
    };
    return wrap(dispatch_orgqr(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::orgqr.out(Tensor self, Tensor input2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_orgqr_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & input2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::orgqr_out(out, self, input2);
    };
    return wrap(dispatch_orgqr_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ormqr
static PyObject * THPVariable_ormqr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ormqr(Tensor input, Tensor input2, Tensor input3, bool left=True, bool transpose=False, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(5)) {
    // aten::ormqr(Tensor self, Tensor input2, Tensor input3, bool left=True, bool transpose=False) -> Tensor
    
    auto dispatch_ormqr = [](const at::Tensor & self, const at::Tensor & input2, const at::Tensor & input3, bool left, bool transpose) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.ormqr(input2, input3, left, transpose);
    };
    return wrap(dispatch_ormqr(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3), _r.toBool(4)));
  } else {
    // aten::ormqr.out(Tensor self, Tensor input2, Tensor input3, bool left=True, bool transpose=False, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_ormqr_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & input2, const at::Tensor & input3, bool left, bool transpose) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::ormqr_out(out, self, input2, input3, left, transpose);
    };
    return wrap(dispatch_ormqr_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toBool(3), _r.toBool(4)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _lu_with_info
static PyObject * THPVariable__lu_with_info(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__lu_with_info_structseq();
  static PythonArgParser parser({
    "_lu_with_info(Tensor input, bool pivot=True, bool check_errors=True)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_lu_with_info(Tensor self, bool pivot=True, bool check_errors=True) -> (Tensor LU, Tensor pivots, Tensor info)
  
  auto dispatch__lu_with_info = [](const at::Tensor & self, bool pivot, bool check_errors) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_lu_with_info(self, pivot, check_errors);
  };
  return wrap(NamedTuple, dispatch__lu_with_info(_r.tensor(0), _r.toBool(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// lu_solve
static PyObject * THPVariable_lu_solve(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lu_solve(Tensor input, Tensor LU_data, Tensor LU_pivots, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::lu_solve(Tensor self, Tensor LU_data, Tensor LU_pivots) -> Tensor
    
    auto dispatch_lu_solve = [](const at::Tensor & self, const at::Tensor & LU_data, const at::Tensor & LU_pivots) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.lu_solve(LU_data, LU_pivots);
    };
    return wrap(dispatch_lu_solve(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
  } else {
    // aten::lu_solve.out(Tensor self, Tensor LU_data, Tensor LU_pivots, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_lu_solve_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & LU_data, const at::Tensor & LU_pivots) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::lu_solve_out(out, self, LU_data, LU_pivots);
    };
    return wrap(dispatch_lu_solve_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.tensor(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// lu_unpack
static PyObject * THPVariable_lu_unpack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_lu_unpack_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_lu_unpack_out_structseq();
  static PythonArgParser parser({
    "lu_unpack(Tensor LU_data, Tensor LU_pivots, bool unpack_data=True, bool unpack_pivots=True, *, TensorList[3] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::lu_unpack(Tensor LU_data, Tensor LU_pivots, bool unpack_data=True, bool unpack_pivots=True) -> (Tensor P, Tensor L, Tensor U)
    
    auto dispatch_lu_unpack = [](const at::Tensor & LU_data, const at::Tensor & LU_pivots, bool unpack_data, bool unpack_pivots) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::lu_unpack(LU_data, LU_pivots, unpack_data, unpack_pivots);
    };
    return wrap(NamedTuple, dispatch_lu_unpack(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
  } else {
    // aten::lu_unpack.out(Tensor LU_data, Tensor LU_pivots, bool unpack_data=True, bool unpack_pivots=True, *, Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) -> (Tensor(a!) P, Tensor(b!) L, Tensor(c!) U)
    auto out = _r.tensorlist_n<3>(4);
    auto dispatch_lu_unpack_out = [](at::Tensor & P, at::Tensor & L, at::Tensor & U, const at::Tensor & LU_data, const at::Tensor & LU_pivots, bool unpack_data, bool unpack_pivots) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::lu_unpack_out(P, L, U, LU_data, LU_pivots, unpack_data, unpack_pivots);
    };
    return wrap(NamedTuple1, dispatch_lu_unpack_out(out[0], out[1], out[2], _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// multinomial
static PyObject * THPVariable_multinomial(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "multinomial(Tensor input, int64_t num_samples, bool replacement=False, *, Generator? generator=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::multinomial(Tensor self, int num_samples, bool replacement=False, *, Generator? generator=None) -> Tensor
    
    auto dispatch_multinomial = [](const at::Tensor & self, int64_t num_samples, bool replacement, ::std::optional<at::Generator> generator) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.multinomial(num_samples, replacement, generator);
    };
    return wrap(dispatch_multinomial(_r.tensor(0), _r.toInt64(1), _r.toBool(2), _r.generator(3)));
  } else {
    // aten::multinomial.out(Tensor self, int num_samples, bool replacement=False, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_multinomial_out = [](at::Tensor out, const at::Tensor & self, int64_t num_samples, bool replacement, ::std::optional<at::Generator> generator) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::multinomial_out(out, self, num_samples, replacement, generator);
    };
    return wrap(dispatch_multinomial_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.toBool(2), _r.generator(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// lgamma
static PyObject * THPVariable_lgamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lgamma(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::lgamma(Tensor self) -> Tensor
    
    auto dispatch_lgamma = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.lgamma();
    };
    return wrap(dispatch_lgamma(_r.tensor(0)));
  } else {
    // aten::lgamma.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_lgamma_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::lgamma_out(out, self);
    };
    return wrap(dispatch_lgamma_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// digamma
static PyObject * THPVariable_digamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "digamma(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::digamma(Tensor self) -> Tensor
    
    auto dispatch_digamma = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.digamma();
    };
    return wrap(dispatch_digamma(_r.tensor(0)));
  } else {
    // aten::digamma.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_digamma_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::digamma_out(out, self);
    };
    return wrap(dispatch_digamma_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// polygamma
static PyObject * THPVariable_polygamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "polygamma(int64_t n, Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::polygamma(int n, Tensor self) -> Tensor
    
    auto dispatch_polygamma = [](int64_t n, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.polygamma(n);
    };
    return wrap(dispatch_polygamma(_r.toInt64(0), _r.tensor(1)));
  } else {
    // aten::polygamma.out(int n, Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_polygamma_out = [](at::Tensor out, int64_t n, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::polygamma_out(out, n, self);
    };
    return wrap(dispatch_polygamma_out(_r.tensor(2), _r.toInt64(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// erfinv
static PyObject * THPVariable_erfinv(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "erfinv(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::erfinv(Tensor self) -> Tensor
    
    auto dispatch_erfinv = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.erfinv();
    };
    return wrap(dispatch_erfinv(_r.tensor(0)));
  } else {
    // aten::erfinv.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_erfinv_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::erfinv_out(out, self);
    };
    return wrap(dispatch_erfinv_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// i0
static PyObject * THPVariable_i0(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "i0(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::i0(Tensor self) -> Tensor
    
    auto dispatch_i0 = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.i0();
    };
    return wrap(dispatch_i0(_r.tensor(0)));
  } else {
    // aten::i0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_i0_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::i0_out(out, self);
    };
    return wrap(dispatch_i0_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// i0_
static PyObject * THPVariable_i0_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "i0_(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::i0_(Tensor(a!) self) -> Tensor(a!)
  
  auto dispatch_i0_ = [](at::Tensor self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.i0_();
  };
  return wrap(dispatch_i0_(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// sign
static PyObject * THPVariable_sign(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "sign(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::sign(Tensor self) -> Tensor
    
    auto dispatch_sign = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.sign();
    };
    return wrap(dispatch_sign(_r.tensor(0)));
  } else {
    // aten::sign.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_sign_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::sign_out(out, self);
    };
    return wrap(dispatch_sign_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// signbit
static PyObject * THPVariable_signbit(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "signbit(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::signbit(Tensor self) -> Tensor
    
    auto dispatch_signbit = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.signbit();
    };
    return wrap(dispatch_signbit(_r.tensor(0)));
  } else {
    // aten::signbit.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_signbit_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::signbit_out(out, self);
    };
    return wrap(dispatch_signbit_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// dist
static PyObject * THPVariable_dist(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "dist(Tensor input, Tensor other, Scalar p=2)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::dist(Tensor self, Tensor other, Scalar p=2) -> Tensor
  
  auto dispatch_dist = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & p) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.dist(other, p);
  };
  return wrap(dispatch_dist(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// atan2
static PyObject * THPVariable_atan2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "atan2(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::atan2(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_atan2 = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.atan2(other);
    };
    return wrap(dispatch_atan2(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::atan2.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_atan2_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::atan2_out(out, self, other);
    };
    return wrap(dispatch_atan2_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// arctan2
static PyObject * THPVariable_arctan2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "arctan2(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::arctan2(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_arctan2 = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.arctan2(other);
    };
    return wrap(dispatch_arctan2(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::arctan2.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_arctan2_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::arctan2_out(out, self, other);
    };
    return wrap(dispatch_arctan2_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// lerp
static PyObject * THPVariable_lerp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "lerp(Tensor input, Tensor end, Tensor weight, *, Tensor out=None)",
    "lerp(Tensor input, Tensor end, Scalar weight, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> Tensor
        
        auto dispatch_lerp = [](const at::Tensor & self, const at::Tensor & end, const at::Tensor & weight) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.lerp(end, weight);
        };
        return wrap(dispatch_lerp(_r.tensor(0), _r.tensor(1), _r.tensor(2)));
      } else {
        // aten::lerp.Tensor_out(Tensor self, Tensor end, Tensor weight, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_lerp_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & end, const at::Tensor & weight) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::lerp_out(out, self, end, weight);
        };
        return wrap(dispatch_lerp_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.tensor(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::lerp.Scalar(Tensor self, Tensor end, Scalar weight) -> Tensor
        
        auto dispatch_lerp = [](const at::Tensor & self, const at::Tensor & end, const at::Scalar & weight) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.lerp(end, weight);
        };
        return wrap(dispatch_lerp(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
      } else {
        // aten::lerp.Scalar_out(Tensor self, Tensor end, Scalar weight, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_lerp_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & end, const at::Scalar & weight) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::lerp_out(out, self, end, weight);
        };
        return wrap(dispatch_lerp_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.scalar(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// histc
static PyObject * THPVariable_histc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "histc(Tensor input, int64_t bins=100, Scalar min=0, Scalar max=0, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::histc(Tensor self, int bins=100, Scalar min=0, Scalar max=0) -> Tensor
    
    auto dispatch_histc = [](const at::Tensor & self, int64_t bins, const at::Scalar & min, const at::Scalar & max) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.histc(bins, min, max);
    };
    return wrap(dispatch_histc(_r.tensor(0), _r.toInt64(1), _r.scalar(2), _r.scalar(3)));
  } else {
    // aten::histc.out(Tensor self, int bins=100, Scalar min=0, Scalar max=0, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_histc_out = [](at::Tensor out, const at::Tensor & self, int64_t bins, const at::Scalar & min, const at::Scalar & max) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::histc_out(out, self, bins, min, max);
    };
    return wrap(dispatch_histc_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.scalar(2), _r.scalar(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// histogram
static PyObject * THPVariable_histogram(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_histogram_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_histogram_structseq();
  static PythonArgParser parser({
    "histogram(Tensor input, Tensor bins, *, Tensor? weight=None, bool density=False, TensorList[2] out=None)",
    "histogram(Tensor input, int64_t bins=100, *, ArrayRef<double>? range=None, Tensor? weight=None, bool density=False, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::histogram.bins_tensor(Tensor self, Tensor bins, *, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor bin_edges)
        
        auto dispatch_histogram = [](const at::Tensor & self, const at::Tensor & bins, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.histogram(bins, weight, density);
        };
        return wrap(NamedTuple1, dispatch_histogram(_r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.toBool(3)));
      } else {
        // aten::histogram.bins_tensor_out(Tensor self, Tensor bins, *, Tensor? weight=None, bool density=False, Tensor(a!) hist, Tensor(b!) bin_edges) -> (Tensor(a!) hist, Tensor(b!) bin_edges)
        auto out = _r.tensorlist_n<2>(4);
        auto dispatch_histogram_out = [](at::Tensor & hist, at::Tensor & bin_edges, const at::Tensor & self, const at::Tensor & bins, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::histogram_out(hist, bin_edges, self, bins, weight, density);
        };
        return wrap(NamedTuple, dispatch_histogram_out(out[0], out[1], _r.tensor(0), _r.tensor(1), _r.optionalTensor(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(5)) {
        // aten::histogram.bin_ct(Tensor self, int bins=100, *, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor bin_edges)
        
        auto dispatch_histogram = [](const at::Tensor & self, int64_t bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.histogram(bins, range, weight, density);
        };
        return wrap(NamedTuple1, dispatch_histogram(_r.tensor(0), _r.toInt64(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
      } else {
        // aten::histogram.bin_ct_out(Tensor self, int bins=100, *, float[]? range=None, Tensor? weight=None, bool density=False, Tensor(a!) hist, Tensor(b!) bin_edges) -> (Tensor(a!) hist, Tensor(b!) bin_edges)
        auto out = _r.tensorlist_n<2>(5);
        auto dispatch_histogram_out = [](at::Tensor & hist, at::Tensor & bin_edges, const at::Tensor & self, int64_t bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::histogram_out(hist, bin_edges, self, bins, range, weight, density);
        };
        return wrap(NamedTuple, dispatch_histogram_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _histogramdd_bin_edges
static PyObject * THPVariable__histogramdd_bin_edges(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_histogramdd_bin_edges(Tensor input, IntArrayRef bins, *, ArrayRef<double>? range=None, Tensor? weight=None, bool density=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_histogramdd_bin_edges(Tensor self, int[] bins, *, float[]? range=None, Tensor? weight=None, bool density=False) -> Tensor[]
  
  auto dispatch__histogramdd_bin_edges = [](const at::Tensor & self, at::IntArrayRef bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_histogramdd_bin_edges(self, bins, range, weight, density);
  };
  return wrap(dispatch__histogramdd_bin_edges(_r.tensor(0), _r.intlist(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _histogramdd_from_bin_cts
static PyObject * THPVariable__histogramdd_from_bin_cts(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_histogramdd_from_bin_cts(Tensor input, IntArrayRef bins, *, ArrayRef<double>? range=None, Tensor? weight=None, bool density=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_histogramdd_from_bin_cts(Tensor self, int[] bins, *, float[]? range=None, Tensor? weight=None, bool density=False) -> Tensor
  
  auto dispatch__histogramdd_from_bin_cts = [](const at::Tensor & self, at::IntArrayRef bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_histogramdd_from_bin_cts(self, bins, range, weight, density);
  };
  return wrap(dispatch__histogramdd_from_bin_cts(_r.tensor(0), _r.intlist(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _histogramdd_from_bin_tensors
static PyObject * THPVariable__histogramdd_from_bin_tensors(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_histogramdd_from_bin_tensors(Tensor input, TensorList bins, *, Tensor? weight=None, bool density=False)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_histogramdd_from_bin_tensors(Tensor self, Tensor[] bins, *, Tensor? weight=None, bool density=False) -> Tensor
  
  auto dispatch__histogramdd_from_bin_tensors = [](const at::Tensor & self, at::TensorList bins, const ::std::optional<at::Tensor> & weight, bool density) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_histogramdd_from_bin_tensors(self, bins, weight, density);
  };
  return wrap(dispatch__histogramdd_from_bin_tensors(_r.tensor(0), _r.tensorlist(1), _r.optionalTensor(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// histogramdd
static PyObject * THPVariable_histogramdd(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_histogramdd_structseq();
  static PythonArgParser parser({
    "histogramdd(Tensor input, int64_t bins, ArrayRef<double>? range=None, Tensor? weight=None, bool density=False)",
    "histogramdd(Tensor input, IntArrayRef bins, ArrayRef<double>? range=None, Tensor? weight=None, bool density=False)",
    "histogramdd(Tensor input, TensorList bins, ArrayRef<double>? range=None, Tensor? weight=None, bool density=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::histogramdd.int_bins(Tensor self, int bins, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor[] bin_edges)
      
      auto dispatch_histogramdd = [](const at::Tensor & self, int64_t bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,::std::vector<at::Tensor>> {
        pybind11::gil_scoped_release no_gil;
        return at::histogramdd(self, bins, range, weight, density);
      };
      return wrap(NamedTuple, dispatch_histogramdd(_r.tensor(0), _r.toInt64(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
    }
    case 1: {
      // aten::histogramdd(Tensor self, int[] bins, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor[] bin_edges)
      
      auto dispatch_histogramdd = [](const at::Tensor & self, at::IntArrayRef bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,::std::vector<at::Tensor>> {
        pybind11::gil_scoped_release no_gil;
        return at::histogramdd(self, bins, range, weight, density);
      };
      return wrap(NamedTuple, dispatch_histogramdd(_r.tensor(0), _r.intlist(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
    }
    case 2: {
      // aten::histogramdd.TensorList_bins(Tensor self, Tensor[] bins, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor[] bin_edges)
      
      auto dispatch_histogramdd = [](const at::Tensor & self, at::TensorList bins, ::std::optional<at::ArrayRef<double>> range, const ::std::optional<at::Tensor> & weight, bool density) -> ::std::tuple<at::Tensor,::std::vector<at::Tensor>> {
        pybind11::gil_scoped_release no_gil;
        return at::histogramdd(self, bins, range, weight, density);
      };
      return wrap(NamedTuple, dispatch_histogramdd(_r.tensor(0), _r.tensorlist(1), _r.doublelistOptional(2), _r.optionalTensor(3), _r.toBool(4)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// fmod
static PyObject * THPVariable_fmod(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fmod(Tensor input, Tensor other, *, Tensor out=None)",
    "fmod(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::fmod.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_fmod = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.fmod(other);
        };
        return wrap(dispatch_fmod(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::fmod.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_fmod_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::fmod_out(out, self, other);
        };
        return wrap(dispatch_fmod_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::fmod.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_fmod = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.fmod(other);
        };
        return wrap(dispatch_fmod(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::fmod.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_fmod_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::fmod_out(out, self, other);
        };
        return wrap(dispatch_fmod_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// hypot
static PyObject * THPVariable_hypot(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "hypot(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::hypot(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_hypot = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.hypot(other);
    };
    return wrap(dispatch_hypot(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::hypot.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_hypot_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::hypot_out(out, self, other);
    };
    return wrap(dispatch_hypot_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// igamma
static PyObject * THPVariable_igamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "igamma(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::igamma(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_igamma = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.igamma(other);
    };
    return wrap(dispatch_igamma(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::igamma.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_igamma_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::igamma_out(out, self, other);
    };
    return wrap(dispatch_igamma_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// igammac
static PyObject * THPVariable_igammac(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "igammac(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::igammac(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_igammac = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.igammac(other);
    };
    return wrap(dispatch_igammac(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::igammac.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_igammac_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::igammac_out(out, self, other);
    };
    return wrap(dispatch_igammac_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// nextafter
static PyObject * THPVariable_nextafter(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nextafter(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::nextafter(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_nextafter = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.nextafter(other);
    };
    return wrap(dispatch_nextafter(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::nextafter.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_nextafter_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::nextafter_out(out, self, other);
    };
    return wrap(dispatch_nextafter_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// remainder
static PyObject * THPVariable_remainder(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "remainder(Tensor input, Tensor other, *, Tensor out=None)",
    "remainder(Scalar self, Tensor other)",
    "remainder(Tensor input, Scalar other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::remainder.Tensor(Tensor self, Tensor other) -> Tensor
        
        auto dispatch_remainder = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.remainder(other);
        };
        return wrap(dispatch_remainder(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::remainder.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_remainder_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::remainder_out(out, self, other);
        };
        return wrap(dispatch_remainder_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      // aten::remainder.Scalar_Tensor(Scalar self, Tensor other) -> Tensor
      
      auto dispatch_remainder = [](const at::Scalar & self, const at::Tensor & other) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::remainder(self, other);
      };
      return wrap(dispatch_remainder(_r.scalar(0), _r.tensor(1)));
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::remainder.Scalar(Tensor self, Scalar other) -> Tensor
        
        auto dispatch_remainder = [](const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.remainder(other);
        };
        return wrap(dispatch_remainder(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::remainder.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_remainder_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & other) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::remainder_out(out, self, other);
        };
        return wrap(dispatch_remainder_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fmin
static PyObject * THPVariable_fmin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fmin(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::fmin(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_fmin = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.fmin(other);
    };
    return wrap(dispatch_fmin(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::fmin.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_fmin_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::fmin_out(out, self, other);
    };
    return wrap(dispatch_fmin_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// fmax
static PyObject * THPVariable_fmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "fmax(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::fmax(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_fmax = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.fmax(other);
    };
    return wrap(dispatch_fmax(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::fmax.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_fmax_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::fmax_out(out, self, other);
    };
    return wrap(dispatch_fmax_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// maximum
static PyObject * THPVariable_maximum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "maximum(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::maximum(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_maximum = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.maximum(other);
    };
    return wrap(dispatch_maximum(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::maximum.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_maximum_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::maximum_out(out, self, other);
    };
    return wrap(dispatch_maximum_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// minimum
static PyObject * THPVariable_minimum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "minimum(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::minimum(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_minimum = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.minimum(other);
    };
    return wrap(dispatch_minimum(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::minimum.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_minimum_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::minimum_out(out, self, other);
    };
    return wrap(dispatch_minimum_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// quantile
static PyObject * THPVariable_quantile(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "quantile(Tensor input, Tensor q, int64_t? dim=None, bool keepdim=False, *, c10::string_view interpolation=\"linear\", Tensor out=None)",
    "quantile(Tensor input, double q, int64_t? dim=None, bool keepdim=False, *, c10::string_view interpolation=\"linear\", Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // aten::quantile(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor
        
        auto dispatch_quantile = [](const at::Tensor & self, const at::Tensor & q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.quantile(q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_quantile(_r.tensor(0), _r.tensor(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      } else {
        // aten::quantile.out(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_quantile_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::quantile_out(out, self, q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_quantile_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      }
    }
    case 1: {
      if (_r.isNone(5)) {
        // aten::quantile.scalar(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor
        
        auto dispatch_quantile = [](const at::Tensor & self, double q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.quantile(q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_quantile(_r.tensor(0), _r.toDouble(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      } else {
        // aten::quantile.scalar_out(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_quantile_out = [](at::Tensor out, const at::Tensor & self, double q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::quantile_out(out, self, q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_quantile_out(_r.tensor(5), _r.tensor(0), _r.toDouble(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// nanquantile
static PyObject * THPVariable_nanquantile(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "nanquantile(Tensor input, Tensor q, int64_t? dim=None, bool keepdim=False, *, c10::string_view interpolation=\"linear\", Tensor out=None)",
    "nanquantile(Tensor input, double q, int64_t? dim=None, bool keepdim=False, *, c10::string_view interpolation=\"linear\", Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(5)) {
        // aten::nanquantile(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor
        
        auto dispatch_nanquantile = [](const at::Tensor & self, const at::Tensor & q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.nanquantile(q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_nanquantile(_r.tensor(0), _r.tensor(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      } else {
        // aten::nanquantile.out(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_nanquantile_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::nanquantile_out(out, self, q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_nanquantile_out(_r.tensor(5), _r.tensor(0), _r.tensor(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      }
    }
    case 1: {
      if (_r.isNone(5)) {
        // aten::nanquantile.scalar(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor
        
        auto dispatch_nanquantile = [](const at::Tensor & self, double q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.nanquantile(q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_nanquantile(_r.tensor(0), _r.toDouble(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      } else {
        // aten::nanquantile.scalar_out(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_nanquantile_out = [](at::Tensor out, const at::Tensor & self, double q, ::std::optional<int64_t> dim, bool keepdim, c10::string_view interpolation) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::nanquantile_out(out, self, q, dim, keepdim, interpolation);
        };
        return wrap(dispatch_nanquantile_out(_r.tensor(5), _r.tensor(0), _r.toDouble(1), _r.toInt64Optional(2), _r.toBool(3), _r.stringView(4)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// sort
static PyObject * THPVariable_sort(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_sort_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_sort_structseq();
  static PythonArgParser parser({
    "sort(Tensor input, *, bool? stable, int64_t dim=-1, bool descending=False, TensorList[2] out=None)",
    "sort(Tensor input, int64_t dim=-1, bool descending=False, *, TensorList[2] out=None)",
    "sort(Tensor input, *, bool? stable, Dimname dim, bool descending=False, TensorList[2] out=None)",
    "sort(Tensor input, Dimname dim, bool descending=False, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::sort.stable(Tensor self, *, bool? stable, int dim=-1, bool descending=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_sort = [](const at::Tensor & self, ::std::optional<bool> stable, int64_t dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.sort(stable, dim, descending);
        };
        return wrap(NamedTuple1, dispatch_sort(_r.tensor(0), _r.toBoolOptional(1), _r.toInt64(2), _r.toBool(3)));
      } else {
        // aten::sort.values_stable(Tensor self, *, bool? stable, int dim=-1, bool descending=False, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(4);
        auto dispatch_sort_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, ::std::optional<bool> stable, int64_t dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::sort_out(values, indices, self, stable, dim, descending);
        };
        return wrap(NamedTuple, dispatch_sort_out(out[0], out[1], _r.tensor(0), _r.toBoolOptional(1), _r.toInt64(2), _r.toBool(3)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::sort(Tensor self, int dim=-1, bool descending=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_sort = [](const at::Tensor & self, int64_t dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.sort(dim, descending);
        };
        return wrap(NamedTuple1, dispatch_sort(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      } else {
        // aten::sort.values(Tensor self, int dim=-1, bool descending=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_sort_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, int64_t dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::sort_out(values, indices, self, dim, descending);
        };
        return wrap(NamedTuple, dispatch_sort_out(out[0], out[1], _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
      }
    }
    case 2: {
      if (_r.isNone(4)) {
        // aten::sort.dimname_stable(Tensor self, *, bool? stable, Dimname dim, bool descending=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_sort = [](const at::Tensor & self, ::std::optional<bool> stable, at::Dimname dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.sort(stable, dim, descending);
        };
        return wrap(NamedTuple1, dispatch_sort(_r.tensor(0), _r.toBoolOptional(1), _r.dimname(2), _r.toBool(3)));
      } else {
        // aten::sort.dimname_values_stable(Tensor self, *, bool? stable, Dimname dim, bool descending=False, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(4);
        auto dispatch_sort_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, ::std::optional<bool> stable, at::Dimname dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::sort_out(values, indices, self, stable, dim, descending);
        };
        return wrap(NamedTuple, dispatch_sort_out(out[0], out[1], _r.tensor(0), _r.toBoolOptional(1), _r.dimname(2), _r.toBool(3)));
      }
    }
    case 3: {
      if (_r.isNone(3)) {
        // aten::sort.dimname(Tensor self, Dimname dim, bool descending=False) -> (Tensor values, Tensor indices)
        
        auto dispatch_sort = [](const at::Tensor & self, at::Dimname dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return self.sort(dim, descending);
        };
        return wrap(NamedTuple1, dispatch_sort(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
      } else {
        // aten::sort.dimname_values(Tensor self, Dimname dim, bool descending=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
        auto out = _r.tensorlist_n<2>(3);
        auto dispatch_sort_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, at::Dimname dim, bool descending) -> ::std::tuple<at::Tensor,at::Tensor> {
          pybind11::gil_scoped_release no_gil;
          return at::sort_out(values, indices, self, dim, descending);
        };
        return wrap(NamedTuple, dispatch_sort_out(out[0], out[1], _r.tensor(0), _r.dimname(1), _r.toBool(2)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// msort
static PyObject * THPVariable_msort(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "msort(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::msort(Tensor self) -> Tensor
    
    auto dispatch_msort = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.msort();
    };
    return wrap(dispatch_msort(_r.tensor(0)));
  } else {
    // aten::msort.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_msort_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::msort_out(out, self);
    };
    return wrap(dispatch_msort_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// argsort
static PyObject * THPVariable_argsort(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "argsort(Tensor input, *, bool stable, int64_t dim=-1, bool descending=False, Tensor out=None)",
    "argsort(Tensor input, int64_t dim=-1, bool descending=False)",
    "argsort(Tensor input, Dimname dim, bool descending=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::argsort.stable(Tensor self, *, bool stable, int dim=-1, bool descending=False) -> Tensor
        
        auto dispatch_argsort = [](const at::Tensor & self, bool stable, int64_t dim, bool descending) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.argsort(stable, dim, descending);
        };
        return wrap(dispatch_argsort(_r.tensor(0), _r.toBool(1), _r.toInt64(2), _r.toBool(3)));
      } else {
        // aten::argsort.stable_out(Tensor self, *, bool stable, int dim=-1, bool descending=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_argsort_out = [](at::Tensor out, const at::Tensor & self, bool stable, int64_t dim, bool descending) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::argsort_out(out, self, stable, dim, descending);
        };
        return wrap(dispatch_argsort_out(_r.tensor(4), _r.tensor(0), _r.toBool(1), _r.toInt64(2), _r.toBool(3)));
      }
    }
    case 1: {
      // aten::argsort(Tensor self, int dim=-1, bool descending=False) -> Tensor
      
      auto dispatch_argsort = [](const at::Tensor & self, int64_t dim, bool descending) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.argsort(dim, descending);
      };
      return wrap(dispatch_argsort(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
    }
    case 2: {
      // aten::argsort.dimname(Tensor self, Dimname dim, bool descending=False) -> Tensor
      
      auto dispatch_argsort = [](const at::Tensor & self, at::Dimname dim, bool descending) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return self.argsort(dim, descending);
      };
      return wrap(dispatch_argsort(_r.tensor(0), _r.dimname(1), _r.toBool(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// topk
static PyObject * THPVariable_topk(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_topk_out_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_topk_structseq();
  static PythonArgParser parser({
    "topk(Tensor input, SymInt k, int64_t dim=-1, bool largest=True, bool sorted=True, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(5)) {
    // aten::topk(Tensor self, SymInt k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices)
    
    auto dispatch_topk = [](const at::Tensor & self, c10::SymInt k, int64_t dim, bool largest, bool sorted) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.topk_symint(k, dim, largest, sorted);
    };
    return wrap(NamedTuple1, dispatch_topk(_r.tensor(0), _r.toSymInt(1), _r.toInt64(2), _r.toBool(3), _r.toBool(4)));
  } else {
    // aten::topk.values(Tensor self, SymInt k, int dim=-1, bool largest=True, bool sorted=True, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices)
    auto out = _r.tensorlist_n<2>(5);
    auto dispatch_topk_out = [](at::Tensor & values, at::Tensor & indices, const at::Tensor & self, c10::SymInt k, int64_t dim, bool largest, bool sorted) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::topk_symint_out(values, indices, self, k, dim, largest, sorted);
    };
    return wrap(NamedTuple, dispatch_topk_out(out[0], out[1], _r.tensor(0), _r.toSymInt(1), _r.toInt64(2), _r.toBool(3), _r.toBool(4)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// renorm
static PyObject * THPVariable_renorm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "renorm(Tensor input, Scalar p, int64_t dim, Scalar maxnorm, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::renorm(Tensor self, Scalar p, int dim, Scalar maxnorm) -> Tensor
    
    auto dispatch_renorm = [](const at::Tensor & self, const at::Scalar & p, int64_t dim, const at::Scalar & maxnorm) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.renorm(p, dim, maxnorm);
    };
    return wrap(dispatch_renorm(_r.tensor(0), _r.scalar(1), _r.toInt64(2), _r.scalar(3)));
  } else {
    // aten::renorm.out(Tensor self, Scalar p, int dim, Scalar maxnorm, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_renorm_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & p, int64_t dim, const at::Scalar & maxnorm) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::renorm_out(out, self, p, dim, maxnorm);
    };
    return wrap(dispatch_renorm_out(_r.tensor(4), _r.tensor(0), _r.scalar(1), _r.toInt64(2), _r.scalar(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// equal
static PyObject * THPVariable_equal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "equal(Tensor input, Tensor other)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::equal(Tensor self, Tensor other) -> bool
  
  auto dispatch_equal = [](const at::Tensor & self, const at::Tensor & other) -> bool {
    pybind11::gil_scoped_release no_gil;
    return self.equal(other);
  };
  return wrap(dispatch_equal(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// pow
static PyObject * THPVariable_pow(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "pow(Tensor input, Tensor exponent, *, Tensor out=None)",
    "pow(Scalar self, Tensor exponent, *, Tensor out=None)",
    "pow(Tensor input, Scalar exponent, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::pow.Tensor_Tensor(Tensor self, Tensor exponent) -> Tensor
        
        auto dispatch_pow = [](const at::Tensor & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.pow(exponent);
        };
        return wrap(dispatch_pow(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::pow.Tensor_Tensor_out(Tensor self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_pow_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::pow_out(out, self, exponent);
        };
        return wrap(dispatch_pow_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::pow.Scalar(Scalar self, Tensor exponent) -> Tensor
        
        auto dispatch_pow = [](const at::Scalar & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::pow(self, exponent);
        };
        return wrap(dispatch_pow(_r.scalar(0), _r.tensor(1)));
      } else {
        // aten::pow.Scalar_out(Scalar self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_pow_out = [](at::Tensor out, const at::Scalar & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::pow_out(out, self, exponent);
        };
        return wrap(dispatch_pow_out(_r.tensor(2), _r.scalar(0), _r.tensor(1)));
      }
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::pow.Tensor_Scalar(Tensor self, Scalar exponent) -> Tensor
        
        auto dispatch_pow = [](const at::Tensor & self, const at::Scalar & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.pow(exponent);
        };
        return wrap(dispatch_pow(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::pow.Tensor_Scalar_out(Tensor self, Scalar exponent, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_pow_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::pow_out(out, self, exponent);
        };
        return wrap(dispatch_pow_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// float_power
static PyObject * THPVariable_float_power(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "float_power(Tensor input, Tensor exponent, *, Tensor out=None)",
    "float_power(Scalar self, Tensor exponent, *, Tensor out=None)",
    "float_power(Tensor input, Scalar exponent, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::float_power.Tensor_Tensor(Tensor self, Tensor exponent) -> Tensor
        
        auto dispatch_float_power = [](const at::Tensor & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.float_power(exponent);
        };
        return wrap(dispatch_float_power(_r.tensor(0), _r.tensor(1)));
      } else {
        // aten::float_power.Tensor_Tensor_out(Tensor self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_float_power_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::float_power_out(out, self, exponent);
        };
        return wrap(dispatch_float_power_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::float_power.Scalar(Scalar self, Tensor exponent) -> Tensor
        
        auto dispatch_float_power = [](const at::Scalar & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::float_power(self, exponent);
        };
        return wrap(dispatch_float_power(_r.scalar(0), _r.tensor(1)));
      } else {
        // aten::float_power.Scalar_out(Scalar self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_float_power_out = [](at::Tensor out, const at::Scalar & self, const at::Tensor & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::float_power_out(out, self, exponent);
        };
        return wrap(dispatch_float_power_out(_r.tensor(2), _r.scalar(0), _r.tensor(1)));
      }
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::float_power.Tensor_Scalar(Tensor self, Scalar exponent) -> Tensor
        
        auto dispatch_float_power = [](const at::Tensor & self, const at::Scalar & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return self.float_power(exponent);
        };
        return wrap(dispatch_float_power(_r.tensor(0), _r.scalar(1)));
      } else {
        // aten::float_power.Tensor_Scalar_out(Tensor self, Scalar exponent, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_float_power_out = [](at::Tensor out, const at::Tensor & self, const at::Scalar & exponent) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::float_power_out(out, self, exponent);
        };
        return wrap(dispatch_float_power_out(_r.tensor(2), _r.tensor(0), _r.scalar(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// normal
static PyObject * THPVariable_normal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "normal(Tensor mean, Tensor std, *, Generator? generator=None, Tensor out=None)",
    "normal(Tensor mean, double std=1, *, Generator? generator=None, Tensor out=None)",
    "normal(double mean, Tensor std, *, Generator? generator=None, Tensor out=None)",
    "normal(double mean, double std, SymIntArrayRef size, *, Generator? generator=None, Tensor out=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? requires_grad=False)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(3)) {
        // aten::normal.Tensor_Tensor(Tensor mean, Tensor std, *, Generator? generator=None) -> Tensor
        
        auto dispatch_normal = [](const at::Tensor & mean, const at::Tensor & std, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal(mean, std, generator);
        };
        return wrap(dispatch_normal(_r.tensor(0), _r.tensor(1), _r.generator(2)));
      } else {
        // aten::normal.Tensor_Tensor_out(Tensor mean, Tensor std, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_normal_out = [](at::Tensor out, const at::Tensor & mean, const at::Tensor & std, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal_out(out, mean, std, generator);
        };
        return wrap(dispatch_normal_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.generator(2)));
      }
    }
    case 1: {
      if (_r.isNone(3)) {
        // aten::normal.Tensor_float(Tensor mean, float std=1, *, Generator? generator=None) -> Tensor
        
        auto dispatch_normal = [](const at::Tensor & mean, double std, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal(mean, std, generator);
        };
        return wrap(dispatch_normal(_r.tensor(0), _r.toDouble(1), _r.generator(2)));
      } else {
        // aten::normal.Tensor_float_out(Tensor mean, float std=1, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_normal_out = [](at::Tensor out, const at::Tensor & mean, double std, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal_out(out, mean, std, generator);
        };
        return wrap(dispatch_normal_out(_r.tensor(3), _r.tensor(0), _r.toDouble(1), _r.generator(2)));
      }
    }
    case 2: {
      if (_r.isNone(3)) {
        // aten::normal.float_Tensor(float mean, Tensor std, *, Generator? generator=None) -> Tensor
        
        auto dispatch_normal = [](double mean, const at::Tensor & std, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal(mean, std, generator);
        };
        return wrap(dispatch_normal(_r.toDouble(0), _r.tensor(1), _r.generator(2)));
      } else {
        // aten::normal.float_Tensor_out(float mean, Tensor std, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_normal_out = [](at::Tensor out, double mean, const at::Tensor & std, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal_out(out, mean, std, generator);
        };
        return wrap(dispatch_normal_out(_r.tensor(3), _r.toDouble(0), _r.tensor(1), _r.generator(2)));
      }
    }
    case 3: {
      if (_r.isNone(4)) {
        // aten::normal.float_float(float mean, float std, SymInt[] size, *, Generator? generator=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
        const auto options = TensorOptions()
            .dtype(_r.scalartypeOptional(5))
            .device(_r.deviceWithDefault(7, torch::tensors::get_default_device()))
            .layout(_r.layoutOptional(6))
            .requires_grad(_r.toBool(9))
            .pinned_memory(_r.toBool(8));
        torch::utils::maybe_initialize_device(options);
        
        auto dispatch_normal = [](double mean, double std, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator, at::TensorOptions options) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return torch::normal_symint(mean, std, size, generator, options);
        };
        return wrap(dispatch_normal(_r.toDouble(0), _r.toDouble(1), _r.symintlist(2), _r.generator(3), options));
      } else {
        // aten::normal.float_float_out(float mean, float std, SymInt[] size, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!)
        check_out_type_matches(_r.tensor(4), _r.scalartypeOptional(5),
                               _r.isNone(5), _r.layoutOptional(6),
                               _r.deviceWithDefault(7, torch::tensors::get_default_device()), _r.isNone(7));
        
        auto dispatch_normal_out = [](at::Tensor out, double mean, double std, c10::SymIntArrayRef size, ::std::optional<at::Generator> generator) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::normal_symint_out(out, mean, std, size, generator);
        };
        return wrap(dispatch_normal_out(_r.tensor(4), _r.toDouble(0), _r.toDouble(1), _r.symintlist(2), _r.generator(3)).set_requires_grad(_r.toBool(9)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _amp_foreach_non_finite_check_and_unscale_
static PyObject * THPVariable__amp_foreach_non_finite_check_and_unscale_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_amp_foreach_non_finite_check_and_unscale_(TensorList self, Tensor found_inf, Tensor inv_scale)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_amp_foreach_non_finite_check_and_unscale_(Tensor(a!)[] self, Tensor(b!) found_inf, Tensor inv_scale) -> ()
  
  auto dispatch__amp_foreach_non_finite_check_and_unscale_ = [](at::TensorList self, at::Tensor found_inf, const at::Tensor & inv_scale) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_amp_foreach_non_finite_check_and_unscale_(self, found_inf, inv_scale);
  };
  dispatch__amp_foreach_non_finite_check_and_unscale_(_r.tensorlist(0), _r.tensor(1), _r.tensor(2));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _amp_update_scale_
static PyObject * THPVariable__amp_update_scale_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_amp_update_scale_(Tensor input, Tensor growth_tracker, Tensor found_inf, double scale_growth_factor, double scale_backoff_factor, int64_t growth_interval)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_amp_update_scale_(Tensor(a!) self, Tensor(b!) growth_tracker, Tensor found_inf, float scale_growth_factor, float scale_backoff_factor, int growth_interval) -> Tensor(a!)
  
  auto dispatch__amp_update_scale_ = [](at::Tensor self, at::Tensor growth_tracker, const at::Tensor & found_inf, double scale_growth_factor, double scale_backoff_factor, int64_t growth_interval) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_amp_update_scale_(self, growth_tracker, found_inf, scale_growth_factor, scale_backoff_factor, growth_interval);
  };
  return wrap(dispatch__amp_update_scale_(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3), _r.toDouble(4), _r.toInt64(5)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_add
static PyObject * THPVariable__foreach_add(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_add(TensorList self, Scalar scalar)",
    "_foreach_add(TensorList self, ScalarList scalars)",
    "_foreach_add(TensorList self, Tensor other, *, Scalar alpha=1)",
    "_foreach_add(TensorList self, TensorList other, *, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_add.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_add = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_add(self, scalar);
      };
      return wrap(dispatch__foreach_add(_r.tensorlist(0), _r.scalar(1)));
    }
    case 1: {
      // aten::_foreach_add.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_add = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_add(self, scalars);
      };
      return wrap(dispatch__foreach_add(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 2: {
      // aten::_foreach_add.Tensor(Tensor[] self, Tensor other, *, Scalar alpha=1) -> Tensor[]
      
      auto dispatch__foreach_add = [](at::TensorList self, const at::Tensor & other, const at::Scalar & alpha) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_add(self, other, alpha);
      };
      return wrap(dispatch__foreach_add(_r.tensorlist(0), _r.tensor(1), _r.scalar(2)));
    }
    case 3: {
      // aten::_foreach_add.List(Tensor[] self, Tensor[] other, *, Scalar alpha=1) -> Tensor[]
      
      auto dispatch__foreach_add = [](at::TensorList self, at::TensorList other, const at::Scalar & alpha) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_add(self, other, alpha);
      };
      return wrap(dispatch__foreach_add(_r.tensorlist(0), _r.tensorlist(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_add_
static PyObject * THPVariable__foreach_add_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_add_(TensorList self, Scalar scalar)",
    "_foreach_add_(TensorList self, ScalarList scalars)",
    "_foreach_add_(TensorList self, Tensor other, *, Scalar alpha=1)",
    "_foreach_add_(TensorList self, TensorList other, *, Scalar alpha=1)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_add_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_add_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_add_(self, scalar);
      };
      dispatch__foreach_add_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_add_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_add_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_add_(self, scalars);
      };
      dispatch__foreach_add_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_add_.Tensor(Tensor(a!)[] self, Tensor other, *, Scalar alpha=1) -> ()
      
      auto dispatch__foreach_add_ = [](at::TensorList self, const at::Tensor & other, const at::Scalar & alpha) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_add_(self, other, alpha);
      };
      dispatch__foreach_add_(_r.tensorlist(0), _r.tensor(1), _r.scalar(2));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 3: {
      // aten::_foreach_add_.List(Tensor(a!)[] self, Tensor[] other, *, Scalar alpha=1) -> ()
      
      auto dispatch__foreach_add_ = [](at::TensorList self, at::TensorList other, const at::Scalar & alpha) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_add_(self, other, alpha);
      };
      dispatch__foreach_add_(_r.tensorlist(0), _r.tensorlist(1), _r.scalar(2));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_sub
static PyObject * THPVariable__foreach_sub(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sub(TensorList self, Scalar scalar)",
    "_foreach_sub(TensorList self, ScalarList scalars)",
    "_foreach_sub(TensorList self, TensorList other, *, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_sub.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_sub = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_sub(self, scalar);
      };
      return wrap(dispatch__foreach_sub(_r.tensorlist(0), _r.scalar(1)));
    }
    case 1: {
      // aten::_foreach_sub.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_sub = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_sub(self, scalars);
      };
      return wrap(dispatch__foreach_sub(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 2: {
      // aten::_foreach_sub.List(Tensor[] self, Tensor[] other, *, Scalar alpha=1) -> Tensor[]
      
      auto dispatch__foreach_sub = [](at::TensorList self, at::TensorList other, const at::Scalar & alpha) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_sub(self, other, alpha);
      };
      return wrap(dispatch__foreach_sub(_r.tensorlist(0), _r.tensorlist(1), _r.scalar(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_sub_
static PyObject * THPVariable__foreach_sub_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sub_(TensorList self, Scalar scalar)",
    "_foreach_sub_(TensorList self, ScalarList scalars)",
    "_foreach_sub_(TensorList self, TensorList other, *, Scalar alpha=1)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_sub_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_sub_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_sub_(self, scalar);
      };
      dispatch__foreach_sub_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_sub_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_sub_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_sub_(self, scalars);
      };
      dispatch__foreach_sub_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_sub_.List(Tensor(a!)[] self, Tensor[] other, *, Scalar alpha=1) -> ()
      
      auto dispatch__foreach_sub_ = [](at::TensorList self, at::TensorList other, const at::Scalar & alpha) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_sub_(self, other, alpha);
      };
      dispatch__foreach_sub_(_r.tensorlist(0), _r.tensorlist(1), _r.scalar(2));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_mul
static PyObject * THPVariable__foreach_mul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_mul(TensorList self, ScalarList scalars)",
    "_foreach_mul(TensorList self, Tensor other)",
    "_foreach_mul(TensorList self, TensorList other)",
    "_foreach_mul(TensorList self, Scalar scalar)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_mul.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_mul = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_mul(self, scalars);
      };
      return wrap(dispatch__foreach_mul(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 1: {
      // aten::_foreach_mul.Tensor(Tensor[] self, Tensor other) -> Tensor[]
      
      auto dispatch__foreach_mul = [](at::TensorList self, const at::Tensor & other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_mul(self, other);
      };
      return wrap(dispatch__foreach_mul(_r.tensorlist(0), _r.tensor(1)));
    }
    case 2: {
      // aten::_foreach_mul.List(Tensor[] self, Tensor[] other) -> Tensor[]
      
      auto dispatch__foreach_mul = [](at::TensorList self, at::TensorList other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_mul(self, other);
      };
      return wrap(dispatch__foreach_mul(_r.tensorlist(0), _r.tensorlist(1)));
    }
    case 3: {
      // aten::_foreach_mul.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_mul = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_mul(self, scalar);
      };
      return wrap(dispatch__foreach_mul(_r.tensorlist(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_mul_
static PyObject * THPVariable__foreach_mul_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_mul_(TensorList self, ScalarList scalars)",
    "_foreach_mul_(TensorList self, Tensor other)",
    "_foreach_mul_(TensorList self, TensorList other)",
    "_foreach_mul_(TensorList self, Scalar scalar)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_mul_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_mul_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_mul_(self, scalars);
      };
      dispatch__foreach_mul_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_mul_.Tensor(Tensor(a!)[] self, Tensor other) -> ()
      
      auto dispatch__foreach_mul_ = [](at::TensorList self, const at::Tensor & other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_mul_(self, other);
      };
      dispatch__foreach_mul_(_r.tensorlist(0), _r.tensor(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_mul_.List(Tensor(a!)[] self, Tensor[] other) -> ()
      
      auto dispatch__foreach_mul_ = [](at::TensorList self, at::TensorList other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_mul_(self, other);
      };
      dispatch__foreach_mul_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 3: {
      // aten::_foreach_mul_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_mul_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_mul_(self, scalar);
      };
      dispatch__foreach_mul_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_div
static PyObject * THPVariable__foreach_div(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_div(TensorList self, ScalarList scalars)",
    "_foreach_div(TensorList self, Tensor other)",
    "_foreach_div(TensorList self, TensorList other)",
    "_foreach_div(TensorList self, Scalar scalar)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_div.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_div = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_div(self, scalars);
      };
      return wrap(dispatch__foreach_div(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 1: {
      // aten::_foreach_div.Tensor(Tensor[] self, Tensor other) -> Tensor[]
      
      auto dispatch__foreach_div = [](at::TensorList self, const at::Tensor & other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_div(self, other);
      };
      return wrap(dispatch__foreach_div(_r.tensorlist(0), _r.tensor(1)));
    }
    case 2: {
      // aten::_foreach_div.List(Tensor[] self, Tensor[] other) -> Tensor[]
      
      auto dispatch__foreach_div = [](at::TensorList self, at::TensorList other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_div(self, other);
      };
      return wrap(dispatch__foreach_div(_r.tensorlist(0), _r.tensorlist(1)));
    }
    case 3: {
      // aten::_foreach_div.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_div = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_div(self, scalar);
      };
      return wrap(dispatch__foreach_div(_r.tensorlist(0), _r.scalar(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_div_
static PyObject * THPVariable__foreach_div_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_div_(TensorList self, ScalarList scalars)",
    "_foreach_div_(TensorList self, Tensor other)",
    "_foreach_div_(TensorList self, TensorList other)",
    "_foreach_div_(TensorList self, Scalar scalar)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_div_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_div_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_div_(self, scalars);
      };
      dispatch__foreach_div_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_div_.Tensor(Tensor(a!)[] self, Tensor other) -> ()
      
      auto dispatch__foreach_div_ = [](at::TensorList self, const at::Tensor & other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_div_(self, other);
      };
      dispatch__foreach_div_(_r.tensorlist(0), _r.tensor(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_div_.List(Tensor(a!)[] self, Tensor[] other) -> ()
      
      auto dispatch__foreach_div_ = [](at::TensorList self, at::TensorList other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_div_(self, other);
      };
      dispatch__foreach_div_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 3: {
      // aten::_foreach_div_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_div_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_div_(self, scalar);
      };
      dispatch__foreach_div_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_clamp_max
static PyObject * THPVariable__foreach_clamp_max(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_clamp_max(TensorList self, Scalar scalar)",
    "_foreach_clamp_max(TensorList self, ScalarList scalars)",
    "_foreach_clamp_max(TensorList self, TensorList other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_clamp_max.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_clamp_max = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_clamp_max(self, scalar);
      };
      return wrap(dispatch__foreach_clamp_max(_r.tensorlist(0), _r.scalar(1)));
    }
    case 1: {
      // aten::_foreach_clamp_max.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_clamp_max = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_clamp_max(self, scalars);
      };
      return wrap(dispatch__foreach_clamp_max(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 2: {
      // aten::_foreach_clamp_max.List(Tensor[] self, Tensor[] other) -> Tensor[]
      
      auto dispatch__foreach_clamp_max = [](at::TensorList self, at::TensorList other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_clamp_max(self, other);
      };
      return wrap(dispatch__foreach_clamp_max(_r.tensorlist(0), _r.tensorlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_clamp_max_
static PyObject * THPVariable__foreach_clamp_max_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_clamp_max_(TensorList self, Scalar scalar)",
    "_foreach_clamp_max_(TensorList self, ScalarList scalars)",
    "_foreach_clamp_max_(TensorList self, TensorList other)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_clamp_max_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_clamp_max_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_clamp_max_(self, scalar);
      };
      dispatch__foreach_clamp_max_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_clamp_max_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_clamp_max_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_clamp_max_(self, scalars);
      };
      dispatch__foreach_clamp_max_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_clamp_max_.List(Tensor(a!)[] self, Tensor[] other) -> ()
      
      auto dispatch__foreach_clamp_max_ = [](at::TensorList self, at::TensorList other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_clamp_max_(self, other);
      };
      dispatch__foreach_clamp_max_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_clamp_min
static PyObject * THPVariable__foreach_clamp_min(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_clamp_min(TensorList self, Scalar scalar)",
    "_foreach_clamp_min(TensorList self, ScalarList scalars)",
    "_foreach_clamp_min(TensorList self, TensorList other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_clamp_min.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_clamp_min = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_clamp_min(self, scalar);
      };
      return wrap(dispatch__foreach_clamp_min(_r.tensorlist(0), _r.scalar(1)));
    }
    case 1: {
      // aten::_foreach_clamp_min.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_clamp_min = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_clamp_min(self, scalars);
      };
      return wrap(dispatch__foreach_clamp_min(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 2: {
      // aten::_foreach_clamp_min.List(Tensor[] self, Tensor[] other) -> Tensor[]
      
      auto dispatch__foreach_clamp_min = [](at::TensorList self, at::TensorList other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_clamp_min(self, other);
      };
      return wrap(dispatch__foreach_clamp_min(_r.tensorlist(0), _r.tensorlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_clamp_min_
static PyObject * THPVariable__foreach_clamp_min_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_clamp_min_(TensorList self, Scalar scalar)",
    "_foreach_clamp_min_(TensorList self, ScalarList scalars)",
    "_foreach_clamp_min_(TensorList self, TensorList other)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_clamp_min_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_clamp_min_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_clamp_min_(self, scalar);
      };
      dispatch__foreach_clamp_min_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_clamp_min_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_clamp_min_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_clamp_min_(self, scalars);
      };
      dispatch__foreach_clamp_min_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_clamp_min_.List(Tensor(a!)[] self, Tensor[] other) -> ()
      
      auto dispatch__foreach_clamp_min_ = [](at::TensorList self, at::TensorList other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_clamp_min_(self, other);
      };
      dispatch__foreach_clamp_min_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_maximum
static PyObject * THPVariable__foreach_maximum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_maximum(TensorList self, Scalar scalar)",
    "_foreach_maximum(TensorList self, ScalarList scalars)",
    "_foreach_maximum(TensorList self, TensorList other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_maximum.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_maximum = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_maximum(self, scalar);
      };
      return wrap(dispatch__foreach_maximum(_r.tensorlist(0), _r.scalar(1)));
    }
    case 1: {
      // aten::_foreach_maximum.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_maximum = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_maximum(self, scalars);
      };
      return wrap(dispatch__foreach_maximum(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 2: {
      // aten::_foreach_maximum.List(Tensor[] self, Tensor[] other) -> Tensor[]
      
      auto dispatch__foreach_maximum = [](at::TensorList self, at::TensorList other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_maximum(self, other);
      };
      return wrap(dispatch__foreach_maximum(_r.tensorlist(0), _r.tensorlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_maximum_
static PyObject * THPVariable__foreach_maximum_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_maximum_(TensorList self, Scalar scalar)",
    "_foreach_maximum_(TensorList self, ScalarList scalars)",
    "_foreach_maximum_(TensorList self, TensorList other)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_maximum_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_maximum_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_maximum_(self, scalar);
      };
      dispatch__foreach_maximum_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_maximum_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_maximum_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_maximum_(self, scalars);
      };
      dispatch__foreach_maximum_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_maximum_.List(Tensor(a!)[] self, Tensor[] other) -> ()
      
      auto dispatch__foreach_maximum_ = [](at::TensorList self, at::TensorList other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_maximum_(self, other);
      };
      dispatch__foreach_maximum_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_minimum
static PyObject * THPVariable__foreach_minimum(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_minimum(TensorList self, Scalar scalar)",
    "_foreach_minimum(TensorList self, ScalarList scalars)",
    "_foreach_minimum(TensorList self, TensorList other)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_minimum.Scalar(Tensor[] self, Scalar scalar) -> Tensor[]
      
      auto dispatch__foreach_minimum = [](at::TensorList self, const at::Scalar & scalar) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_minimum(self, scalar);
      };
      return wrap(dispatch__foreach_minimum(_r.tensorlist(0), _r.scalar(1)));
    }
    case 1: {
      // aten::_foreach_minimum.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_minimum = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_minimum(self, scalars);
      };
      return wrap(dispatch__foreach_minimum(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 2: {
      // aten::_foreach_minimum.List(Tensor[] self, Tensor[] other) -> Tensor[]
      
      auto dispatch__foreach_minimum = [](at::TensorList self, at::TensorList other) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_minimum(self, other);
      };
      return wrap(dispatch__foreach_minimum(_r.tensorlist(0), _r.tensorlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_minimum_
static PyObject * THPVariable__foreach_minimum_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_minimum_(TensorList self, Scalar scalar)",
    "_foreach_minimum_(TensorList self, ScalarList scalars)",
    "_foreach_minimum_(TensorList self, TensorList other)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_minimum_.Scalar(Tensor(a!)[] self, Scalar scalar) -> ()
      
      auto dispatch__foreach_minimum_ = [](at::TensorList self, const at::Scalar & scalar) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_minimum_(self, scalar);
      };
      dispatch__foreach_minimum_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_minimum_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_minimum_ = [](at::TensorList self, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_minimum_(self, scalars);
      };
      dispatch__foreach_minimum_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_minimum_.List(Tensor(a!)[] self, Tensor[] other) -> ()
      
      auto dispatch__foreach_minimum_ = [](at::TensorList self, at::TensorList other) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_minimum_(self, other);
      };
      dispatch__foreach_minimum_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_addcdiv
static PyObject * THPVariable__foreach_addcdiv(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_addcdiv(TensorList self, TensorList tensor1, TensorList tensor2, ScalarList scalars)",
    "_foreach_addcdiv(TensorList self, TensorList tensor1, TensorList tensor2, Tensor scalars)",
    "_foreach_addcdiv(TensorList self, TensorList tensor1, TensorList tensor2, Scalar value=1)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_addcdiv.ScalarList(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_addcdiv = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_addcdiv(self, tensor1, tensor2, scalars);
      };
      return wrap(dispatch__foreach_addcdiv(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalarlist(3)));
    }
    case 1: {
      // aten::_foreach_addcdiv.Tensor(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> Tensor[]
      
      auto dispatch__foreach_addcdiv = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Tensor & scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_addcdiv(self, tensor1, tensor2, scalars);
      };
      return wrap(dispatch__foreach_addcdiv(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensor(3)));
    }
    case 2: {
      // aten::_foreach_addcdiv.Scalar(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> Tensor[]
      
      auto dispatch__foreach_addcdiv = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Scalar & value) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_addcdiv(self, tensor1, tensor2, value);
      };
      return wrap(dispatch__foreach_addcdiv(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalar(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_addcdiv_
static PyObject * THPVariable__foreach_addcdiv_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_addcdiv_(TensorList self, TensorList tensor1, TensorList tensor2, ScalarList scalars)",
    "_foreach_addcdiv_(TensorList self, TensorList tensor1, TensorList tensor2, Tensor scalars)",
    "_foreach_addcdiv_(TensorList self, TensorList tensor1, TensorList tensor2, Scalar value=1)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_addcdiv_.ScalarList(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_addcdiv_ = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_addcdiv_(self, tensor1, tensor2, scalars);
      };
      dispatch__foreach_addcdiv_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalarlist(3));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_addcdiv_.Tensor(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> ()
      
      auto dispatch__foreach_addcdiv_ = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Tensor & scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_addcdiv_(self, tensor1, tensor2, scalars);
      };
      dispatch__foreach_addcdiv_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensor(3));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_addcdiv_.Scalar(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> ()
      
      auto dispatch__foreach_addcdiv_ = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Scalar & value) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_addcdiv_(self, tensor1, tensor2, value);
      };
      dispatch__foreach_addcdiv_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalar(3));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_addcmul
static PyObject * THPVariable__foreach_addcmul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_addcmul(TensorList self, TensorList tensor1, TensorList tensor2, ScalarList scalars)",
    "_foreach_addcmul(TensorList self, TensorList tensor1, TensorList tensor2, Tensor scalars)",
    "_foreach_addcmul(TensorList self, TensorList tensor1, TensorList tensor2, Scalar value=1)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_addcmul.ScalarList(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> Tensor[]
      
      auto dispatch__foreach_addcmul = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, at::ArrayRef<at::Scalar> scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_addcmul(self, tensor1, tensor2, scalars);
      };
      return wrap(dispatch__foreach_addcmul(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalarlist(3)));
    }
    case 1: {
      // aten::_foreach_addcmul.Tensor(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> Tensor[]
      
      auto dispatch__foreach_addcmul = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Tensor & scalars) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_addcmul(self, tensor1, tensor2, scalars);
      };
      return wrap(dispatch__foreach_addcmul(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensor(3)));
    }
    case 2: {
      // aten::_foreach_addcmul.Scalar(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> Tensor[]
      
      auto dispatch__foreach_addcmul = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Scalar & value) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_addcmul(self, tensor1, tensor2, value);
      };
      return wrap(dispatch__foreach_addcmul(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalar(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_addcmul_
static PyObject * THPVariable__foreach_addcmul_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_addcmul_(TensorList self, TensorList tensor1, TensorList tensor2, ScalarList scalars)",
    "_foreach_addcmul_(TensorList self, TensorList tensor1, TensorList tensor2, Tensor scalars)",
    "_foreach_addcmul_(TensorList self, TensorList tensor1, TensorList tensor2, Scalar value=1)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_addcmul_.ScalarList(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> ()
      
      auto dispatch__foreach_addcmul_ = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, at::ArrayRef<at::Scalar> scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_addcmul_(self, tensor1, tensor2, scalars);
      };
      dispatch__foreach_addcmul_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalarlist(3));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_addcmul_.Tensor(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> ()
      
      auto dispatch__foreach_addcmul_ = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Tensor & scalars) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_addcmul_(self, tensor1, tensor2, scalars);
      };
      dispatch__foreach_addcmul_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensor(3));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_addcmul_.Scalar(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> ()
      
      auto dispatch__foreach_addcmul_ = [](at::TensorList self, at::TensorList tensor1, at::TensorList tensor2, const at::Scalar & value) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_addcmul_(self, tensor1, tensor2, value);
      };
      dispatch__foreach_addcmul_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.scalar(3));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_abs
static PyObject * THPVariable__foreach_abs(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_abs(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_abs(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_abs = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_abs(self);
  };
  return wrap(dispatch__foreach_abs(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_abs_
static PyObject * THPVariable__foreach_abs_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_abs_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_abs_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_abs_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_abs_(self);
  };
  dispatch__foreach_abs_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_acos
static PyObject * THPVariable__foreach_acos(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_acos(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_acos(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_acos = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_acos(self);
  };
  return wrap(dispatch__foreach_acos(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_acos_
static PyObject * THPVariable__foreach_acos_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_acos_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_acos_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_acos_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_acos_(self);
  };
  dispatch__foreach_acos_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_asin
static PyObject * THPVariable__foreach_asin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_asin(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_asin(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_asin = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_asin(self);
  };
  return wrap(dispatch__foreach_asin(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_asin_
static PyObject * THPVariable__foreach_asin_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_asin_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_asin_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_asin_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_asin_(self);
  };
  dispatch__foreach_asin_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_atan
static PyObject * THPVariable__foreach_atan(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_atan(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_atan(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_atan = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_atan(self);
  };
  return wrap(dispatch__foreach_atan(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_atan_
static PyObject * THPVariable__foreach_atan_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_atan_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_atan_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_atan_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_atan_(self);
  };
  dispatch__foreach_atan_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_ceil
static PyObject * THPVariable__foreach_ceil(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_ceil(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_ceil(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_ceil = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_ceil(self);
  };
  return wrap(dispatch__foreach_ceil(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_ceil_
static PyObject * THPVariable__foreach_ceil_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_ceil_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_ceil_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_ceil_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_ceil_(self);
  };
  dispatch__foreach_ceil_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_cos
static PyObject * THPVariable__foreach_cos(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_cos(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_cos(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_cos = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_cos(self);
  };
  return wrap(dispatch__foreach_cos(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_cos_
static PyObject * THPVariable__foreach_cos_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_cos_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_cos_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_cos_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_cos_(self);
  };
  dispatch__foreach_cos_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_cosh
static PyObject * THPVariable__foreach_cosh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_cosh(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_cosh(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_cosh = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_cosh(self);
  };
  return wrap(dispatch__foreach_cosh(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_cosh_
static PyObject * THPVariable__foreach_cosh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_cosh_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_cosh_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_cosh_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_cosh_(self);
  };
  dispatch__foreach_cosh_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_erf
static PyObject * THPVariable__foreach_erf(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_erf(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_erf(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_erf = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_erf(self);
  };
  return wrap(dispatch__foreach_erf(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_erf_
static PyObject * THPVariable__foreach_erf_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_erf_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_erf_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_erf_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_erf_(self);
  };
  dispatch__foreach_erf_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_erfc
static PyObject * THPVariable__foreach_erfc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_erfc(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_erfc(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_erfc = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_erfc(self);
  };
  return wrap(dispatch__foreach_erfc(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_erfc_
static PyObject * THPVariable__foreach_erfc_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_erfc_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_erfc_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_erfc_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_erfc_(self);
  };
  dispatch__foreach_erfc_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_exp
static PyObject * THPVariable__foreach_exp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_exp(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_exp(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_exp = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_exp(self);
  };
  return wrap(dispatch__foreach_exp(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_exp_
static PyObject * THPVariable__foreach_exp_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_exp_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_exp_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_exp_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_exp_(self);
  };
  dispatch__foreach_exp_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_expm1
static PyObject * THPVariable__foreach_expm1(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_expm1(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_expm1(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_expm1 = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_expm1(self);
  };
  return wrap(dispatch__foreach_expm1(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_expm1_
static PyObject * THPVariable__foreach_expm1_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_expm1_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_expm1_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_expm1_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_expm1_(self);
  };
  dispatch__foreach_expm1_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_floor
static PyObject * THPVariable__foreach_floor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_floor(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_floor(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_floor = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_floor(self);
  };
  return wrap(dispatch__foreach_floor(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_floor_
static PyObject * THPVariable__foreach_floor_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_floor_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_floor_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_floor_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_floor_(self);
  };
  dispatch__foreach_floor_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_frac
static PyObject * THPVariable__foreach_frac(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_frac(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_frac(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_frac = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_frac(self);
  };
  return wrap(dispatch__foreach_frac(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_frac_
static PyObject * THPVariable__foreach_frac_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_frac_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_frac_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_frac_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_frac_(self);
  };
  dispatch__foreach_frac_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_lerp
static PyObject * THPVariable__foreach_lerp(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_lerp(TensorList self, TensorList tensors1, Scalar weight)",
    "_foreach_lerp(TensorList self, TensorList tensors1, ScalarList weight)",
    "_foreach_lerp(TensorList self, TensorList tensors1, TensorList weights)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_lerp.Scalar(Tensor[] self, Tensor[] tensors1, Scalar weight) -> Tensor[]
      
      auto dispatch__foreach_lerp = [](at::TensorList self, at::TensorList tensors1, const at::Scalar & weight) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_lerp(self, tensors1, weight);
      };
      return wrap(dispatch__foreach_lerp(_r.tensorlist(0), _r.tensorlist(1), _r.scalar(2)));
    }
    case 1: {
      // aten::_foreach_lerp.ScalarList(Tensor[] self, Tensor[] tensors1, Scalar[] weight) -> Tensor[]
      
      auto dispatch__foreach_lerp = [](at::TensorList self, at::TensorList tensors1, at::ArrayRef<at::Scalar> weight) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_lerp(self, tensors1, weight);
      };
      return wrap(dispatch__foreach_lerp(_r.tensorlist(0), _r.tensorlist(1), _r.scalarlist(2)));
    }
    case 2: {
      // aten::_foreach_lerp.List(Tensor[] self, Tensor[] tensors1, Tensor[] weights) -> Tensor[]
      
      auto dispatch__foreach_lerp = [](at::TensorList self, at::TensorList tensors1, at::TensorList weights) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_lerp(self, tensors1, weights);
      };
      return wrap(dispatch__foreach_lerp(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_lerp_
static PyObject * THPVariable__foreach_lerp_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_lerp_(TensorList self, TensorList tensors1, Scalar weight)",
    "_foreach_lerp_(TensorList self, TensorList tensors1, ScalarList weight)",
    "_foreach_lerp_(TensorList self, TensorList tensors1, TensorList weights)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_lerp_.Scalar(Tensor(a!)[] self, Tensor[] tensors1, Scalar weight) -> ()
      
      auto dispatch__foreach_lerp_ = [](at::TensorList self, at::TensorList tensors1, const at::Scalar & weight) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_lerp_(self, tensors1, weight);
      };
      dispatch__foreach_lerp_(_r.tensorlist(0), _r.tensorlist(1), _r.scalar(2));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_lerp_.ScalarList(Tensor(a!)[] self, Tensor[] tensors1, Scalar[] weight) -> ()
      
      auto dispatch__foreach_lerp_ = [](at::TensorList self, at::TensorList tensors1, at::ArrayRef<at::Scalar> weight) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_lerp_(self, tensors1, weight);
      };
      dispatch__foreach_lerp_(_r.tensorlist(0), _r.tensorlist(1), _r.scalarlist(2));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_lerp_.List(Tensor(a!)[] self, Tensor[] tensors1, Tensor[] weights) -> ()
      
      auto dispatch__foreach_lerp_ = [](at::TensorList self, at::TensorList tensors1, at::TensorList weights) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_lerp_(self, tensors1, weights);
      };
      dispatch__foreach_lerp_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_lgamma
static PyObject * THPVariable__foreach_lgamma(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_lgamma(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_lgamma(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_lgamma = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_lgamma(self);
  };
  return wrap(dispatch__foreach_lgamma(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_lgamma_
static PyObject * THPVariable__foreach_lgamma_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_lgamma_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_lgamma_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_lgamma_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_lgamma_(self);
  };
  dispatch__foreach_lgamma_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log
static PyObject * THPVariable__foreach_log(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_log = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_log(self);
  };
  return wrap(dispatch__foreach_log(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log_
static PyObject * THPVariable__foreach_log_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_log_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_log_(self);
  };
  dispatch__foreach_log_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log10
static PyObject * THPVariable__foreach_log10(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log10(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log10(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_log10 = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_log10(self);
  };
  return wrap(dispatch__foreach_log10(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log10_
static PyObject * THPVariable__foreach_log10_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log10_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log10_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_log10_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_log10_(self);
  };
  dispatch__foreach_log10_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log1p
static PyObject * THPVariable__foreach_log1p(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log1p(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log1p(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_log1p = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_log1p(self);
  };
  return wrap(dispatch__foreach_log1p(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log1p_
static PyObject * THPVariable__foreach_log1p_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log1p_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log1p_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_log1p_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_log1p_(self);
  };
  dispatch__foreach_log1p_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log2
static PyObject * THPVariable__foreach_log2(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log2(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log2(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_log2 = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_log2(self);
  };
  return wrap(dispatch__foreach_log2(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_log2_
static PyObject * THPVariable__foreach_log2_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_log2_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_log2_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_log2_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_log2_(self);
  };
  dispatch__foreach_log2_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_max
static PyObject * THPVariable__foreach_max(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_max(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_max(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_max = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_max(self);
  };
  return wrap(dispatch__foreach_max(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_neg
static PyObject * THPVariable__foreach_neg(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_neg(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_neg(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_neg = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_neg(self);
  };
  return wrap(dispatch__foreach_neg(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_neg_
static PyObject * THPVariable__foreach_neg_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_neg_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_neg_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_neg_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_neg_(self);
  };
  dispatch__foreach_neg_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_norm
static PyObject * THPVariable__foreach_norm(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_norm(TensorList self, Scalar ord=2, ScalarType? dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_norm.Scalar(Tensor[] self, Scalar ord=2, ScalarType? dtype=None) -> Tensor[]
  
  auto dispatch__foreach_norm = [](at::TensorList self, const at::Scalar & ord, ::std::optional<at::ScalarType> dtype) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_norm(self, ord, dtype);
  };
  return wrap(dispatch__foreach_norm(_r.tensorlist(0), _r.scalar(1), _r.scalartypeOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_pow
static PyObject * THPVariable__foreach_pow(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_pow(Scalar self, TensorList exponent)",
    "_foreach_pow(TensorList self, Scalar exponent)",
    "_foreach_pow(TensorList self, ScalarList exponent)",
    "_foreach_pow(TensorList self, TensorList exponent)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_pow.ScalarAndTensor(Scalar self, Tensor[] exponent) -> Tensor[]
      
      auto dispatch__foreach_pow = [](const at::Scalar & self, at::TensorList exponent) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_pow(self, exponent);
      };
      return wrap(dispatch__foreach_pow(_r.scalar(0), _r.tensorlist(1)));
    }
    case 1: {
      // aten::_foreach_pow.Scalar(Tensor[] self, Scalar exponent) -> Tensor[]
      
      auto dispatch__foreach_pow = [](at::TensorList self, const at::Scalar & exponent) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_pow(self, exponent);
      };
      return wrap(dispatch__foreach_pow(_r.tensorlist(0), _r.scalar(1)));
    }
    case 2: {
      // aten::_foreach_pow.ScalarList(Tensor[] self, Scalar[] exponent) -> Tensor[]
      
      auto dispatch__foreach_pow = [](at::TensorList self, at::ArrayRef<at::Scalar> exponent) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_pow(self, exponent);
      };
      return wrap(dispatch__foreach_pow(_r.tensorlist(0), _r.scalarlist(1)));
    }
    case 3: {
      // aten::_foreach_pow.List(Tensor[] self, Tensor[] exponent) -> Tensor[]
      
      auto dispatch__foreach_pow = [](at::TensorList self, at::TensorList exponent) -> ::std::vector<at::Tensor> {
        pybind11::gil_scoped_release no_gil;
        return at::_foreach_pow(self, exponent);
      };
      return wrap(dispatch__foreach_pow(_r.tensorlist(0), _r.tensorlist(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _foreach_pow_
static PyObject * THPVariable__foreach_pow_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_pow_(TensorList self, Scalar exponent)",
    "_foreach_pow_(TensorList self, ScalarList exponent)",
    "_foreach_pow_(TensorList self, TensorList exponent)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_foreach_pow_.Scalar(Tensor(a!)[] self, Scalar exponent) -> ()
      
      auto dispatch__foreach_pow_ = [](at::TensorList self, const at::Scalar & exponent) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_pow_(self, exponent);
      };
      dispatch__foreach_pow_(_r.tensorlist(0), _r.scalar(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 1: {
      // aten::_foreach_pow_.ScalarList(Tensor(a!)[] self, Scalar[] exponent) -> ()
      
      auto dispatch__foreach_pow_ = [](at::TensorList self, at::ArrayRef<at::Scalar> exponent) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_pow_(self, exponent);
      };
      dispatch__foreach_pow_(_r.tensorlist(0), _r.scalarlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
    case 2: {
      // aten::_foreach_pow_.List(Tensor(a!)[] self, Tensor[] exponent) -> ()
      
      auto dispatch__foreach_pow_ = [](at::TensorList self, at::TensorList exponent) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_foreach_pow_(self, exponent);
      };
      dispatch__foreach_pow_(_r.tensorlist(0), _r.tensorlist(1));
      PyObject* self_tensorlist = _r.args[0];
      Py_INCREF(self_tensorlist);
      return self_tensorlist;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_reciprocal
static PyObject * THPVariable__foreach_reciprocal(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_reciprocal(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_reciprocal(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_reciprocal = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_reciprocal(self);
  };
  return wrap(dispatch__foreach_reciprocal(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_reciprocal_
static PyObject * THPVariable__foreach_reciprocal_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_reciprocal_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_reciprocal_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_reciprocal_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_reciprocal_(self);
  };
  dispatch__foreach_reciprocal_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_round
static PyObject * THPVariable__foreach_round(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_round(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_round(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_round = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_round(self);
  };
  return wrap(dispatch__foreach_round(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_round_
static PyObject * THPVariable__foreach_round_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_round_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_round_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_round_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_round_(self);
  };
  dispatch__foreach_round_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_rsqrt
static PyObject * THPVariable__foreach_rsqrt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_rsqrt(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_rsqrt(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_rsqrt = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_rsqrt(self);
  };
  return wrap(dispatch__foreach_rsqrt(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_rsqrt_
static PyObject * THPVariable__foreach_rsqrt_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_rsqrt_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_rsqrt_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_rsqrt_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_rsqrt_(self);
  };
  dispatch__foreach_rsqrt_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sigmoid
static PyObject * THPVariable__foreach_sigmoid(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sigmoid(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sigmoid(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_sigmoid = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_sigmoid(self);
  };
  return wrap(dispatch__foreach_sigmoid(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sigmoid_
static PyObject * THPVariable__foreach_sigmoid_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sigmoid_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sigmoid_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_sigmoid_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_sigmoid_(self);
  };
  dispatch__foreach_sigmoid_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sign
static PyObject * THPVariable__foreach_sign(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sign(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sign(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_sign = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_sign(self);
  };
  return wrap(dispatch__foreach_sign(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sign_
static PyObject * THPVariable__foreach_sign_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sign_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sign_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_sign_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_sign_(self);
  };
  dispatch__foreach_sign_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sin
static PyObject * THPVariable__foreach_sin(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sin(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sin(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_sin = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_sin(self);
  };
  return wrap(dispatch__foreach_sin(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sin_
static PyObject * THPVariable__foreach_sin_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sin_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sin_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_sin_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_sin_(self);
  };
  dispatch__foreach_sin_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sinh
static PyObject * THPVariable__foreach_sinh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sinh(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sinh(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_sinh = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_sinh(self);
  };
  return wrap(dispatch__foreach_sinh(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sinh_
static PyObject * THPVariable__foreach_sinh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sinh_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sinh_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_sinh_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_sinh_(self);
  };
  dispatch__foreach_sinh_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sqrt
static PyObject * THPVariable__foreach_sqrt(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sqrt(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sqrt(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_sqrt = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_sqrt(self);
  };
  return wrap(dispatch__foreach_sqrt(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_sqrt_
static PyObject * THPVariable__foreach_sqrt_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_sqrt_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_sqrt_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_sqrt_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_sqrt_(self);
  };
  dispatch__foreach_sqrt_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_tan
static PyObject * THPVariable__foreach_tan(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_tan(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_tan(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_tan = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_tan(self);
  };
  return wrap(dispatch__foreach_tan(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_tan_
static PyObject * THPVariable__foreach_tan_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_tan_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_tan_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_tan_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_tan_(self);
  };
  dispatch__foreach_tan_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_tanh
static PyObject * THPVariable__foreach_tanh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_tanh(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_tanh(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_tanh = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_tanh(self);
  };
  return wrap(dispatch__foreach_tanh(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_tanh_
static PyObject * THPVariable__foreach_tanh_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_tanh_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_tanh_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_tanh_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_tanh_(self);
  };
  dispatch__foreach_tanh_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_trunc
static PyObject * THPVariable__foreach_trunc(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_trunc(TensorList self)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_trunc(Tensor[] self) -> Tensor[]
  
  auto dispatch__foreach_trunc = [](at::TensorList self) -> ::std::vector<at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_foreach_trunc(self);
  };
  return wrap(dispatch__foreach_trunc(_r.tensorlist(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_trunc_
static PyObject * THPVariable__foreach_trunc_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_trunc_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_trunc_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_trunc_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_trunc_(self);
  };
  dispatch__foreach_trunc_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_zero_
static PyObject * THPVariable__foreach_zero_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_zero_(TensorList self)",
  }, /*traceable=*/false);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_zero_(Tensor(a!)[] self) -> ()
  
  auto dispatch__foreach_zero_ = [](at::TensorList self) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_zero_(self);
  };
  dispatch__foreach_zero_(_r.tensorlist(0));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foreach_copy_
static PyObject * THPVariable__foreach_copy_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foreach_copy_(TensorList self, TensorList src, bool non_blocking=False)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foreach_copy_(Tensor(a!)[] self, Tensor[] src, bool non_blocking=False) -> ()
  
  auto dispatch__foreach_copy_ = [](at::TensorList self, at::TensorList src, bool non_blocking) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_foreach_copy_(self, src, non_blocking);
  };
  dispatch__foreach_copy_(_r.tensorlist(0), _r.tensorlist(1), _r.toBool(2));
  PyObject* self_tensorlist = _r.args[0];
  Py_INCREF(self_tensorlist);
  return self_tensorlist;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// bucketize
static PyObject * THPVariable_bucketize(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "bucketize(Tensor input, Tensor boundaries, *, bool out_int32=False, bool right=False, Tensor out=None)",
    "bucketize(Scalar self, Tensor boundaries, *, bool out_int32=False, bool right=False)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(4)) {
        // aten::bucketize.Tensor(Tensor self, Tensor boundaries, *, bool out_int32=False, bool right=False) -> Tensor
        
        auto dispatch_bucketize = [](const at::Tensor & self, const at::Tensor & boundaries, bool out_int32, bool right) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bucketize(self, boundaries, out_int32, right);
        };
        return wrap(dispatch_bucketize(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
      } else {
        // aten::bucketize.Tensor_out(Tensor self, Tensor boundaries, *, bool out_int32=False, bool right=False, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_bucketize_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & boundaries, bool out_int32, bool right) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::bucketize_out(out, self, boundaries, out_int32, right);
        };
        return wrap(dispatch_bucketize_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
      }
    }
    case 1: {
      // aten::bucketize.Scalar(Scalar self, Tensor boundaries, *, bool out_int32=False, bool right=False) -> Tensor
      
      auto dispatch_bucketize = [](const at::Scalar & self, const at::Tensor & boundaries, bool out_int32, bool right) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::bucketize(self, boundaries, out_int32, right);
      };
      return wrap(dispatch_bucketize(_r.scalar(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// searchsorted
static PyObject * THPVariable_searchsorted(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "searchsorted(Tensor sorted_sequence, Tensor input, *, bool out_int32=False, bool right=False, c10::string_view? side=None, Tensor? sorter=None, Tensor out=None)",
    "searchsorted(Tensor sorted_sequence, Scalar self, *, bool out_int32=False, bool right=False, c10::string_view? side=None, Tensor? sorter=None, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(6)) {
        // aten::searchsorted.Tensor(Tensor sorted_sequence, Tensor self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None) -> Tensor
        
        auto dispatch_searchsorted = [](const at::Tensor & sorted_sequence, const at::Tensor & self, bool out_int32, bool right, ::std::optional<c10::string_view> side, const ::std::optional<at::Tensor> & sorter) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::searchsorted(sorted_sequence, self, out_int32, right, side, sorter);
        };
        return wrap(dispatch_searchsorted(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3), _r.stringViewOptional(4), _r.optionalTensor(5)));
      } else {
        // aten::searchsorted.Tensor_out(Tensor sorted_sequence, Tensor self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_searchsorted_out = [](at::Tensor out, const at::Tensor & sorted_sequence, const at::Tensor & self, bool out_int32, bool right, ::std::optional<c10::string_view> side, const ::std::optional<at::Tensor> & sorter) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::searchsorted_out(out, sorted_sequence, self, out_int32, right, side, sorter);
        };
        return wrap(dispatch_searchsorted_out(_r.tensor(6), _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3), _r.stringViewOptional(4), _r.optionalTensor(5)));
      }
    }
    case 1: {
      if (_r.isNone(6)) {
        // aten::searchsorted.Scalar(Tensor sorted_sequence, Scalar self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None) -> Tensor
        
        auto dispatch_searchsorted = [](const at::Tensor & sorted_sequence, const at::Scalar & self, bool out_int32, bool right, ::std::optional<c10::string_view> side, const ::std::optional<at::Tensor> & sorter) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::searchsorted(sorted_sequence, self, out_int32, right, side, sorter);
        };
        return wrap(dispatch_searchsorted(_r.tensor(0), _r.scalar(1), _r.toBool(2), _r.toBool(3), _r.stringViewOptional(4), _r.optionalTensor(5)));
      } else {
        // aten::searchsorted.Scalar_out(Tensor sorted_sequence, Scalar self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_searchsorted_out = [](at::Tensor out, const at::Tensor & sorted_sequence, const at::Scalar & self, bool out_int32, bool right, ::std::optional<c10::string_view> side, const ::std::optional<at::Tensor> & sorter) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::searchsorted_out(out, sorted_sequence, self, out_int32, right, side, sorter);
        };
        return wrap(dispatch_searchsorted_out(_r.tensor(6), _r.tensor(0), _r.scalar(1), _r.toBool(2), _r.toBool(3), _r.stringViewOptional(4), _r.optionalTensor(5)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _convert_indices_from_coo_to_csr
static PyObject * THPVariable__convert_indices_from_coo_to_csr(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_convert_indices_from_coo_to_csr(Tensor input, int64_t size, *, bool out_int32=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_convert_indices_from_coo_to_csr(Tensor self, int size, *, bool out_int32=False) -> Tensor
    
    auto dispatch__convert_indices_from_coo_to_csr = [](const at::Tensor & self, int64_t size, bool out_int32) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_convert_indices_from_coo_to_csr(self, size, out_int32);
    };
    return wrap(dispatch__convert_indices_from_coo_to_csr(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  } else {
    // aten::_convert_indices_from_coo_to_csr.out(Tensor self, int size, *, bool out_int32=False, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__convert_indices_from_coo_to_csr_out = [](at::Tensor out, const at::Tensor & self, int64_t size, bool out_int32) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_convert_indices_from_coo_to_csr_out(out, self, size, out_int32);
    };
    return wrap(dispatch__convert_indices_from_coo_to_csr_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _convert_indices_from_csr_to_coo
static PyObject * THPVariable__convert_indices_from_csr_to_coo(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_convert_indices_from_csr_to_coo(Tensor crow_indices, Tensor col_indices, *, bool out_int32=False, bool transpose=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_convert_indices_from_csr_to_coo(Tensor crow_indices, Tensor col_indices, *, bool out_int32=False, bool transpose=False) -> Tensor
    
    auto dispatch__convert_indices_from_csr_to_coo = [](const at::Tensor & crow_indices, const at::Tensor & col_indices, bool out_int32, bool transpose) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_convert_indices_from_csr_to_coo(crow_indices, col_indices, out_int32, transpose);
    };
    return wrap(dispatch__convert_indices_from_csr_to_coo(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
  } else {
    // aten::_convert_indices_from_csr_to_coo.out(Tensor crow_indices, Tensor col_indices, *, bool out_int32=False, bool transpose=False, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__convert_indices_from_csr_to_coo_out = [](at::Tensor out, const at::Tensor & crow_indices, const at::Tensor & col_indices, bool out_int32, bool transpose) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_convert_indices_from_csr_to_coo_out(out, crow_indices, col_indices, out_int32, transpose);
    };
    return wrap(dispatch__convert_indices_from_csr_to_coo_out(_r.tensor(4), _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// mkldnn_adaptive_avg_pool2d
static PyObject * THPVariable_mkldnn_adaptive_avg_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "mkldnn_adaptive_avg_pool2d(Tensor input, IntArrayRef[2] output_size, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::mkldnn_adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensor
    
    auto dispatch_mkldnn_adaptive_avg_pool2d = [](const at::Tensor & self, at::IntArrayRef output_size) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::mkldnn_adaptive_avg_pool2d(self, output_size);
    };
    return wrap(dispatch_mkldnn_adaptive_avg_pool2d(_r.tensor(0), _r.intlist(1)));
  } else {
    // aten::mkldnn_adaptive_avg_pool2d.out(Tensor self, int[2] output_size, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_mkldnn_adaptive_avg_pool2d_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef output_size) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::mkldnn_adaptive_avg_pool2d_out(out, self, output_size);
    };
    return wrap(dispatch_mkldnn_adaptive_avg_pool2d_out(_r.tensor(2), _r.tensor(0), _r.intlist(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _adaptive_avg_pool2d
static PyObject * THPVariable__adaptive_avg_pool2d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_adaptive_avg_pool2d(Tensor input, SymIntArrayRef[2] output_size)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_adaptive_avg_pool2d(Tensor self, SymInt[2] output_size) -> Tensor
  
  auto dispatch__adaptive_avg_pool2d = [](const at::Tensor & self, c10::SymIntArrayRef output_size) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_adaptive_avg_pool2d_symint(self, output_size);
  };
  return wrap(dispatch__adaptive_avg_pool2d(_r.tensor(0), _r.symintlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _adaptive_avg_pool3d
static PyObject * THPVariable__adaptive_avg_pool3d(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_adaptive_avg_pool3d(Tensor input, SymIntArrayRef[3] output_size)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_adaptive_avg_pool3d(Tensor self, SymInt[3] output_size) -> Tensor
  
  auto dispatch__adaptive_avg_pool3d = [](const at::Tensor & self, c10::SymIntArrayRef output_size) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_adaptive_avg_pool3d_symint(self, output_size);
  };
  return wrap(dispatch__adaptive_avg_pool3d(_r.tensor(0), _r.symintlist(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// column_stack
static PyObject * THPVariable_column_stack(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "column_stack(TensorList tensors, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::column_stack(Tensor[] tensors) -> Tensor
    
    auto dispatch_column_stack = [](at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::column_stack(tensors);
    };
    return wrap(dispatch_column_stack(_r.tensorlist(0)));
  } else {
    // aten::column_stack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_column_stack_out = [](at::Tensor out, at::TensorList tensors) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::column_stack_out(out, tensors);
    };
    return wrap(dispatch_column_stack_out(_r.tensor(1), _r.tensorlist(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isfinite
static PyObject * THPVariable_isfinite(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isfinite(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::isfinite(Tensor self) -> Tensor
  
  auto dispatch_isfinite = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.isfinite();
  };
  return wrap(dispatch_isfinite(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isinf
static PyObject * THPVariable_isinf(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isinf(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::isinf(Tensor self) -> Tensor
  
  auto dispatch_isinf = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.isinf();
  };
  return wrap(dispatch_isinf(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isposinf
static PyObject * THPVariable_isposinf(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isposinf(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::isposinf(Tensor self) -> Tensor
    
    auto dispatch_isposinf = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.isposinf();
    };
    return wrap(dispatch_isposinf(_r.tensor(0)));
  } else {
    // aten::isposinf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_isposinf_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::isposinf_out(out, self);
    };
    return wrap(dispatch_isposinf_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// isneginf
static PyObject * THPVariable_isneginf(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "isneginf(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::isneginf(Tensor self) -> Tensor
    
    auto dispatch_isneginf = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.isneginf();
    };
    return wrap(dispatch_isneginf(_r.tensor(0)));
  } else {
    // aten::isneginf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_isneginf_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::isneginf_out(out, self);
    };
    return wrap(dispatch_isneginf_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _add_batch_dim
static PyObject * THPVariable__add_batch_dim(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_add_batch_dim(Tensor input, int64_t batch_dim, int64_t level)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_add_batch_dim(Tensor self, int batch_dim, int level) -> Tensor
  
  auto dispatch__add_batch_dim = [](const at::Tensor & self, int64_t batch_dim, int64_t level) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_add_batch_dim(self, batch_dim, level);
  };
  return wrap(dispatch__add_batch_dim(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _remove_batch_dim
static PyObject * THPVariable__remove_batch_dim(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_remove_batch_dim(Tensor input, int64_t level, SymInt batch_size, int64_t out_dim)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_remove_batch_dim(Tensor self, int level, SymInt batch_size, int out_dim) -> Tensor
  
  auto dispatch__remove_batch_dim = [](const at::Tensor & self, int64_t level, c10::SymInt batch_size, int64_t out_dim) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_remove_batch_dim_symint(self, level, batch_size, out_dim);
  };
  return wrap(dispatch__remove_batch_dim(_r.tensor(0), _r.toInt64(1), _r.toSymInt(2), _r.toInt64(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _linalg_det
static PyObject * THPVariable__linalg_det(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__linalg_det_structseq();
  static PyTypeObject* NamedTuple1 = generated::get__linalg_det_out_structseq();
  static PythonArgParser parser({
    "_linalg_det(Tensor A, *, TensorList[3] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_linalg_det(Tensor A) -> (Tensor result, Tensor LU, Tensor pivots)
    
    auto dispatch__linalg_det = [](const at::Tensor & A) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_det(A);
    };
    return wrap(NamedTuple, dispatch__linalg_det(_r.tensor(0)));
  } else {
    // aten::_linalg_det.result(Tensor A, *, Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots) -> (Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots)
    auto out = _r.tensorlist_n<3>(1);
    auto dispatch__linalg_det_out = [](at::Tensor & result, at::Tensor & LU, at::Tensor & pivots, const at::Tensor & A) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_det_out(result, LU, pivots, A);
    };
    return wrap(NamedTuple1, dispatch__linalg_det_out(out[0], out[1], out[2], _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// det
static PyObject * THPVariable_det(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "det(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::det(Tensor self) -> Tensor
  
  auto dispatch_det = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.det();
  };
  return wrap(dispatch_det(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _linalg_slogdet
static PyObject * THPVariable__linalg_slogdet(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__linalg_slogdet_structseq();
  static PyTypeObject* NamedTuple1 = generated::get__linalg_slogdet_out_structseq();
  static PythonArgParser parser({
    "_linalg_slogdet(Tensor A, *, TensorList[4] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_linalg_slogdet(Tensor A) -> (Tensor sign, Tensor logabsdet, Tensor LU, Tensor pivots)
    
    auto dispatch__linalg_slogdet = [](const at::Tensor & A) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_slogdet(A);
    };
    return wrap(NamedTuple, dispatch__linalg_slogdet(_r.tensor(0)));
  } else {
    // aten::_linalg_slogdet.sign(Tensor A, *, Tensor(a!) sign, Tensor(b!) logabsdet, Tensor(c!) LU, Tensor(d!) pivots) -> (Tensor(a!) sign, Tensor(b!) logabsdet, Tensor(c!) LU, Tensor(d!) pivots)
    auto out = _r.tensorlist_n<4>(1);
    auto dispatch__linalg_slogdet_out = [](at::Tensor & sign, at::Tensor & logabsdet, at::Tensor & LU, at::Tensor & pivots, const at::Tensor & A) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_slogdet_out(sign, logabsdet, LU, pivots, A);
    };
    return wrap(NamedTuple1, dispatch__linalg_slogdet_out(out[0], out[1], out[2], out[3], _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// slogdet
static PyObject * THPVariable_slogdet(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get_slogdet_structseq();
  static PyTypeObject* NamedTuple1 = generated::get_slogdet_out_structseq();
  static PythonArgParser parser({
    "slogdet(Tensor input, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::slogdet(Tensor self) -> (Tensor sign, Tensor logabsdet)
    
    auto dispatch_slogdet = [](const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return self.slogdet();
    };
    return wrap(NamedTuple, dispatch_slogdet(_r.tensor(0)));
  } else {
    // aten::slogdet.out(Tensor self, *, Tensor(a!) sign, Tensor(b!) logabsdet) -> (Tensor(a!) sign, Tensor(b!) logabsdet)
    auto out = _r.tensorlist_n<2>(1);
    auto dispatch_slogdet_out = [](at::Tensor & sign, at::Tensor & logabsdet, const at::Tensor & self) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::slogdet_out(sign, logabsdet, self);
    };
    return wrap(NamedTuple1, dispatch_slogdet_out(out[0], out[1], _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// logdet
static PyObject * THPVariable_logdet(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "logdet(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::logdet(Tensor self) -> Tensor
  
  auto dispatch_logdet = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return self.logdet();
  };
  return wrap(dispatch_logdet(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _linalg_eigh
static PyObject * THPVariable__linalg_eigh(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__linalg_eigh_structseq();
  static PyTypeObject* NamedTuple1 = generated::get__linalg_eigh_out_structseq();
  static PythonArgParser parser({
    "_linalg_eigh(Tensor A, c10::string_view UPLO=\"L\", bool compute_v=True, *, TensorList[2] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_linalg_eigh(Tensor A, str UPLO="L", bool compute_v=True) -> (Tensor eigenvalues, Tensor eigenvectors)
    
    auto dispatch__linalg_eigh = [](const at::Tensor & A, c10::string_view UPLO, bool compute_v) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_eigh(A, UPLO, compute_v);
    };
    return wrap(NamedTuple, dispatch__linalg_eigh(_r.tensor(0), _r.stringView(1), _r.toBool(2)));
  } else {
    // aten::_linalg_eigh.eigenvalues(Tensor A, str UPLO="L", bool compute_v=True, *, Tensor(a!) eigenvalues, Tensor(b!) eigenvectors) -> (Tensor(a!) eigenvalues, Tensor(b!) eigenvectors)
    auto out = _r.tensorlist_n<2>(3);
    auto dispatch__linalg_eigh_out = [](at::Tensor & eigenvalues, at::Tensor & eigenvectors, const at::Tensor & A, c10::string_view UPLO, bool compute_v) -> ::std::tuple<at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_eigh_out(eigenvalues, eigenvectors, A, UPLO, compute_v);
    };
    return wrap(NamedTuple1, dispatch__linalg_eigh_out(out[0], out[1], _r.tensor(0), _r.stringView(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// inverse
static PyObject * THPVariable_inverse(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "inverse(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::inverse(Tensor self) -> Tensor
    
    auto dispatch_inverse = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.inverse();
    };
    return wrap(dispatch_inverse(_r.tensor(0)));
  } else {
    // aten::inverse.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_inverse_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::inverse_out(out, self);
    };
    return wrap(dispatch_inverse_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// inner
static PyObject * THPVariable_inner(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "inner(Tensor input, Tensor other, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::inner(Tensor self, Tensor other) -> Tensor
    
    auto dispatch_inner = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.inner(other);
    };
    return wrap(dispatch_inner(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::inner.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_inner_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & other) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::inner_out(out, self, other);
    };
    return wrap(dispatch_inner_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// outer
static PyObject * THPVariable_outer(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "outer(Tensor input, Tensor vec2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::outer(Tensor self, Tensor vec2) -> Tensor
    
    auto dispatch_outer = [](const at::Tensor & self, const at::Tensor & vec2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.outer(vec2);
    };
    return wrap(dispatch_outer(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::outer.out(Tensor self, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_outer_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & vec2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::outer_out(out, self, vec2);
    };
    return wrap(dispatch_outer_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ger
static PyObject * THPVariable_ger(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ger(Tensor input, Tensor vec2, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::ger(Tensor self, Tensor vec2) -> Tensor
    
    auto dispatch_ger = [](const at::Tensor & self, const at::Tensor & vec2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return self.ger(vec2);
    };
    return wrap(dispatch_ger(_r.tensor(0), _r.tensor(1)));
  } else {
    // aten::ger.out(Tensor self, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_ger_out = [](at::Tensor out, const at::Tensor & self, const at::Tensor & vec2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::ger_out(out, self, vec2);
    };
    return wrap(dispatch_ger_out(_r.tensor(2), _r.tensor(0), _r.tensor(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _linalg_svd
static PyObject * THPVariable__linalg_svd(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__linalg_svd_structseq();
  static PyTypeObject* NamedTuple1 = generated::get__linalg_svd_out_structseq();
  static PythonArgParser parser({
    "_linalg_svd(Tensor A, bool full_matrices=False, bool compute_uv=True, *, c10::string_view? driver=None, TensorList[3] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_linalg_svd(Tensor A, bool full_matrices=False, bool compute_uv=True, *, str? driver=None) -> (Tensor U, Tensor S, Tensor Vh)
    
    auto dispatch__linalg_svd = [](const at::Tensor & A, bool full_matrices, bool compute_uv, ::std::optional<c10::string_view> driver) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_svd(A, full_matrices, compute_uv, driver);
    };
    return wrap(NamedTuple, dispatch__linalg_svd(_r.tensor(0), _r.toBool(1), _r.toBool(2), _r.stringViewOptional(3)));
  } else {
    // aten::_linalg_svd.U(Tensor A, bool full_matrices=False, bool compute_uv=True, *, str? driver=None, Tensor(a!) U, Tensor(b!) S, Tensor(c!) Vh) -> (Tensor(a!) U, Tensor(b!) S, Tensor(c!) Vh)
    auto out = _r.tensorlist_n<3>(4);
    auto dispatch__linalg_svd_out = [](at::Tensor & U, at::Tensor & S, at::Tensor & Vh, const at::Tensor & A, bool full_matrices, bool compute_uv, ::std::optional<c10::string_view> driver) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_svd_out(U, S, Vh, A, full_matrices, compute_uv, driver);
    };
    return wrap(NamedTuple1, dispatch__linalg_svd_out(out[0], out[1], out[2], _r.tensor(0), _r.toBool(1), _r.toBool(2), _r.stringViewOptional(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _linalg_solve_ex
static PyObject * THPVariable__linalg_solve_ex(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__linalg_solve_ex_structseq();
  static PyTypeObject* NamedTuple1 = generated::get__linalg_solve_ex_out_structseq();
  static PythonArgParser parser({
    "_linalg_solve_ex(Tensor A, Tensor B, *, bool left=True, bool check_errors=False, TensorList[4] out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::_linalg_solve_ex(Tensor A, Tensor B, *, bool left=True, bool check_errors=False) -> (Tensor result, Tensor LU, Tensor pivots, Tensor info)
    
    auto dispatch__linalg_solve_ex = [](const at::Tensor & A, const at::Tensor & B, bool left, bool check_errors) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_solve_ex(A, B, left, check_errors);
    };
    return wrap(NamedTuple, dispatch__linalg_solve_ex(_r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
  } else {
    // aten::_linalg_solve_ex.result(Tensor A, Tensor B, *, bool left=True, bool check_errors=False, Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots, Tensor(d!) info) -> (Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots, Tensor(d!) info)
    auto out = _r.tensorlist_n<4>(4);
    auto dispatch__linalg_solve_ex_out = [](at::Tensor & result, at::Tensor & LU, at::Tensor & pivots, at::Tensor & info, const at::Tensor & A, const at::Tensor & B, bool left, bool check_errors) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::_linalg_solve_ex_out(result, LU, pivots, info, A, B, left, check_errors);
    };
    return wrap(NamedTuple1, dispatch__linalg_solve_ex_out(out[0], out[1], out[2], out[3], _r.tensor(0), _r.tensor(1), _r.toBool(2), _r.toBool(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _test_serialization_subcmul
static PyObject * THPVariable__test_serialization_subcmul(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_serialization_subcmul(Tensor input, Tensor other, Scalar alpha=1)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_test_serialization_subcmul(Tensor self, Tensor other, Scalar alpha=1) -> Tensor
  
  auto dispatch__test_serialization_subcmul = [](const at::Tensor & self, const at::Tensor & other, const at::Scalar & alpha) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_test_serialization_subcmul(self, other, alpha);
  };
  return wrap(dispatch__test_serialization_subcmul(_r.tensor(0), _r.tensor(1), _r.scalar(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _test_parallel_materialize
static PyObject * THPVariable__test_parallel_materialize(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_parallel_materialize(Tensor input, int64_t num_parallel, bool skip_first=False)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_test_parallel_materialize(Tensor self, int num_parallel, bool skip_first=False) -> Tensor
  
  auto dispatch__test_parallel_materialize = [](const at::Tensor & self, int64_t num_parallel, bool skip_first) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_test_parallel_materialize(self, num_parallel, skip_first);
  };
  return wrap(dispatch__test_parallel_materialize(_r.tensor(0), _r.toInt64(1), _r.toBool(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _test_autograd_multiple_dispatch
static PyObject * THPVariable__test_autograd_multiple_dispatch(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_autograd_multiple_dispatch(Tensor input)",
    "_test_autograd_multiple_dispatch(Tensor input, bool b)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_test_autograd_multiple_dispatch.fullcoverage(Tensor self) -> Tensor
      
      auto dispatch__test_autograd_multiple_dispatch = [](const at::Tensor & self) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_test_autograd_multiple_dispatch(self);
      };
      return wrap(dispatch__test_autograd_multiple_dispatch(_r.tensor(0)));
    }
    case 1: {
      // aten::_test_autograd_multiple_dispatch.ntonly(Tensor self, bool b) -> Tensor
      
      auto dispatch__test_autograd_multiple_dispatch = [](const at::Tensor & self, bool b) -> at::Tensor {
        pybind11::gil_scoped_release no_gil;
        return at::_test_autograd_multiple_dispatch(self, b);
      };
      return wrap(dispatch__test_autograd_multiple_dispatch(_r.tensor(0), _r.toBool(1)));
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _test_autograd_multiple_dispatch_view
static PyObject * THPVariable__test_autograd_multiple_dispatch_view(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_autograd_multiple_dispatch_view(Tensor input)",
  }, /*traceable=*/true);

  ParsedArgs<1> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_test_autograd_multiple_dispatch_view(Tensor(a) self) -> Tensor(a)
  
  auto dispatch__test_autograd_multiple_dispatch_view = [](const at::Tensor & self) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_test_autograd_multiple_dispatch_view(self);
  };
  return wrap(dispatch__test_autograd_multiple_dispatch_view(_r.tensor(0)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _test_autograd_multiple_dispatch_view_copy
static PyObject * THPVariable__test_autograd_multiple_dispatch_view_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_test_autograd_multiple_dispatch_view_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_test_autograd_multiple_dispatch_view_copy(Tensor self) -> Tensor
    
    auto dispatch__test_autograd_multiple_dispatch_view_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_test_autograd_multiple_dispatch_view_copy(self);
    };
    return wrap(dispatch__test_autograd_multiple_dispatch_view_copy(_r.tensor(0)));
  } else {
    // aten::_test_autograd_multiple_dispatch_view_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__test_autograd_multiple_dispatch_view_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_test_autograd_multiple_dispatch_view_copy_out(out, self);
    };
    return wrap(dispatch__test_autograd_multiple_dispatch_view_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// segment_reduce
static PyObject * THPVariable_segment_reduce(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "segment_reduce(Tensor data, c10::string_view reduce, *, Tensor? lengths=None, Tensor? indices=None, Tensor? offsets=None, int64_t axis=0, bool unsafe=False, Scalar? initial=None)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::segment_reduce(Tensor data, str reduce, *, Tensor? lengths=None, Tensor? indices=None, Tensor? offsets=None, int axis=0, bool unsafe=False, Scalar? initial=None) -> Tensor
  
  auto dispatch_segment_reduce = [](const at::Tensor & data, c10::string_view reduce, const ::std::optional<at::Tensor> & lengths, const ::std::optional<at::Tensor> & indices, const ::std::optional<at::Tensor> & offsets, int64_t axis, bool unsafe, const ::std::optional<at::Scalar> & initial) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::segment_reduce(data, reduce, lengths, indices, offsets, axis, unsafe, initial);
  };
  return wrap(dispatch_segment_reduce(_r.tensor(0), _r.stringView(1), _r.optionalTensor(2), _r.optionalTensor(3), _r.optionalTensor(4), _r.toInt64(5), _r.toBool(6), _r.scalarOptional(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_tensor_from_tensor_list
static PyObject * THPVariable__nested_tensor_from_tensor_list(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_tensor_from_tensor_list(TensorList list, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_tensor_from_tensor_list(Tensor[] list, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor
  
  auto dispatch__nested_tensor_from_tensor_list = [](at::TensorList list, ::std::optional<at::ScalarType> dtype, ::std::optional<at::Layout> layout, ::std::optional<at::Device> device, ::std::optional<bool> pin_memory) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_tensor_from_tensor_list(list, dtype, layout, device, pin_memory);
  };
  return wrap(dispatch__nested_tensor_from_tensor_list(_r.tensorlist(0), _r.scalartypeOptional(1), _r.layoutOptional(2), _r.deviceOptional(3), _r.toBoolOptional(4)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fw_primal_copy
static PyObject * THPVariable__fw_primal_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fw_primal_copy(Tensor input, int64_t level, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::_fw_primal_copy(Tensor self, int level) -> Tensor
    
    auto dispatch__fw_primal_copy = [](const at::Tensor & self, int64_t level) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fw_primal_copy(self, level);
    };
    return wrap(dispatch__fw_primal_copy(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::_fw_primal_copy.out(Tensor self, int level, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__fw_primal_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t level) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_fw_primal_copy_out(out, self, level);
    };
    return wrap(dispatch__fw_primal_copy_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _make_dual_copy
static PyObject * THPVariable__make_dual_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_make_dual_copy(Tensor primal, Tensor tangent, int64_t level, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_make_dual_copy(Tensor primal, Tensor tangent, int level) -> Tensor
    
    auto dispatch__make_dual_copy = [](const at::Tensor & primal, const at::Tensor & tangent, int64_t level) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_make_dual_copy(primal, tangent, level);
    };
    return wrap(dispatch__make_dual_copy(_r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  } else {
    // aten::_make_dual_copy.out(Tensor primal, Tensor tangent, int level, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__make_dual_copy_out = [](at::Tensor out, const at::Tensor & primal, const at::Tensor & tangent, int64_t level) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_make_dual_copy_out(out, primal, tangent, level);
    };
    return wrap(dispatch__make_dual_copy_out(_r.tensor(3), _r.tensor(0), _r.tensor(1), _r.toInt64(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// view_as_real_copy
static PyObject * THPVariable_view_as_real_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "view_as_real_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::view_as_real_copy(Tensor self) -> Tensor
    
    auto dispatch_view_as_real_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::view_as_real_copy(self);
    };
    return wrap(dispatch_view_as_real_copy(_r.tensor(0)));
  } else {
    // aten::view_as_real_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_view_as_real_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::view_as_real_copy_out(out, self);
    };
    return wrap(dispatch_view_as_real_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// view_as_complex_copy
static PyObject * THPVariable_view_as_complex_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "view_as_complex_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::view_as_complex_copy(Tensor self) -> Tensor
    
    auto dispatch_view_as_complex_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::view_as_complex_copy(self);
    };
    return wrap(dispatch_view_as_complex_copy(_r.tensor(0)));
  } else {
    // aten::view_as_complex_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_view_as_complex_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::view_as_complex_copy_out(out, self);
    };
    return wrap(dispatch_view_as_complex_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _conj_copy
static PyObject * THPVariable__conj_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_conj_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_conj_copy(Tensor self) -> Tensor
    
    auto dispatch__conj_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_conj_copy(self);
    };
    return wrap(dispatch__conj_copy(_r.tensor(0)));
  } else {
    // aten::_conj_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__conj_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_conj_copy_out(out, self);
    };
    return wrap(dispatch__conj_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _neg_view_copy
static PyObject * THPVariable__neg_view_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_neg_view_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_neg_view_copy(Tensor self) -> Tensor
    
    auto dispatch__neg_view_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_neg_view_copy(self);
    };
    return wrap(dispatch__neg_view_copy(_r.tensor(0)));
  } else {
    // aten::_neg_view_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__neg_view_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_neg_view_copy_out(out, self);
    };
    return wrap(dispatch__neg_view_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// as_strided_copy
static PyObject * THPVariable_as_strided_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "as_strided_copy(Tensor input, SymIntArrayRef size, SymIntArrayRef stride, SymInt? storage_offset=None, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::as_strided_copy(Tensor self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor
    
    auto dispatch_as_strided_copy = [](const at::Tensor & self, c10::SymIntArrayRef size, c10::SymIntArrayRef stride, ::std::optional<c10::SymInt> storage_offset) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::as_strided_copy_symint(self, size, stride, storage_offset);
    };
    return wrap(dispatch_as_strided_copy(_r.tensor(0), _r.symintlist(1), _r.symintlist(2), _r.toSymIntOptional(3)));
  } else {
    // aten::as_strided_copy.out(Tensor self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_as_strided_copy_out = [](at::Tensor out, const at::Tensor & self, c10::SymIntArrayRef size, c10::SymIntArrayRef stride, ::std::optional<c10::SymInt> storage_offset) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::as_strided_copy_symint_out(out, self, size, stride, storage_offset);
    };
    return wrap(dispatch_as_strided_copy_out(_r.tensor(4), _r.tensor(0), _r.symintlist(1), _r.symintlist(2), _r.toSymIntOptional(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _sparse_broadcast_to_copy
static PyObject * THPVariable__sparse_broadcast_to_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_sparse_broadcast_to_copy(Tensor input, IntArrayRef size, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::_sparse_broadcast_to_copy(Tensor self, int[] size) -> Tensor
    
    auto dispatch__sparse_broadcast_to_copy = [](const at::Tensor & self, at::IntArrayRef size) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_sparse_broadcast_to_copy(self, size);
    };
    return wrap(dispatch__sparse_broadcast_to_copy(_r.tensor(0), _r.intlist(1)));
  } else {
    // aten::_sparse_broadcast_to_copy.out(Tensor self, int[] size, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__sparse_broadcast_to_copy_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef size) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_sparse_broadcast_to_copy_out(out, self, size);
    };
    return wrap(dispatch__sparse_broadcast_to_copy_out(_r.tensor(2), _r.tensor(0), _r.intlist(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// diagonal_copy
static PyObject * THPVariable_diagonal_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "diagonal_copy(Tensor input, int64_t offset=0, int64_t dim1=0, int64_t dim2=1, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::diagonal_copy(Tensor self, int offset=0, int dim1=0, int dim2=1) -> Tensor
    
    auto dispatch_diagonal_copy = [](const at::Tensor & self, int64_t offset, int64_t dim1, int64_t dim2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::diagonal_copy(self, offset, dim1, dim2);
    };
    return wrap(dispatch_diagonal_copy(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3)));
  } else {
    // aten::diagonal_copy.out(Tensor self, int offset=0, int dim1=0, int dim2=1, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_diagonal_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t offset, int64_t dim1, int64_t dim2) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::diagonal_copy_out(out, self, offset, dim1, dim2);
    };
    return wrap(dispatch_diagonal_copy_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// expand_copy
static PyObject * THPVariable_expand_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "expand_copy(Tensor input, SymIntArrayRef size, *, bool implicit=False, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::expand_copy(Tensor self, SymInt[] size, *, bool implicit=False) -> Tensor
    
    auto dispatch_expand_copy = [](const at::Tensor & self, c10::SymIntArrayRef size, bool implicit) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::expand_copy_symint(self, size, implicit);
    };
    return wrap(dispatch_expand_copy(_r.tensor(0), _r.symintlist(1), _r.toBool(2)));
  } else {
    // aten::expand_copy.out(Tensor self, SymInt[] size, *, bool implicit=False, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_expand_copy_out = [](at::Tensor out, const at::Tensor & self, c10::SymIntArrayRef size, bool implicit) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::expand_copy_symint_out(out, self, size, implicit);
    };
    return wrap(dispatch_expand_copy_out(_r.tensor(3), _r.tensor(0), _r.symintlist(1), _r.toBool(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// permute_copy
static PyObject * THPVariable_permute_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "permute_copy(Tensor input, IntArrayRef dims, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::permute_copy(Tensor self, int[] dims) -> Tensor
    
    auto dispatch_permute_copy = [](const at::Tensor & self, at::IntArrayRef dims) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::permute_copy(self, dims);
    };
    return wrap(dispatch_permute_copy(_r.tensor(0), _r.intlist(1)));
  } else {
    // aten::permute_copy.out(Tensor self, int[] dims, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_permute_copy_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dims) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::permute_copy_out(out, self, dims);
    };
    return wrap(dispatch_permute_copy_out(_r.tensor(2), _r.tensor(0), _r.intlist(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _reshape_alias_copy
static PyObject * THPVariable__reshape_alias_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_reshape_alias_copy(Tensor input, SymIntArrayRef size, SymIntArrayRef stride, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::_reshape_alias_copy(Tensor self, SymInt[] size, SymInt[] stride) -> Tensor
    
    auto dispatch__reshape_alias_copy = [](const at::Tensor & self, c10::SymIntArrayRef size, c10::SymIntArrayRef stride) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_reshape_alias_copy_symint(self, size, stride);
    };
    return wrap(dispatch__reshape_alias_copy(_r.tensor(0), _r.symintlist(1), _r.symintlist(2)));
  } else {
    // aten::_reshape_alias_copy.out(Tensor self, SymInt[] size, SymInt[] stride, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__reshape_alias_copy_out = [](at::Tensor out, const at::Tensor & self, c10::SymIntArrayRef size, c10::SymIntArrayRef stride) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_reshape_alias_copy_symint_out(out, self, size, stride);
    };
    return wrap(dispatch__reshape_alias_copy_out(_r.tensor(3), _r.tensor(0), _r.symintlist(1), _r.symintlist(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// select_copy
static PyObject * THPVariable_select_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "select_copy(Tensor input, int64_t dim, SymInt index, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::select_copy.int(Tensor self, int dim, SymInt index) -> Tensor
    
    auto dispatch_select_copy = [](const at::Tensor & self, int64_t dim, c10::SymInt index) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::select_copy_symint(self, dim, index);
    };
    return wrap(dispatch_select_copy(_r.tensor(0), _r.toInt64(1), _r.toSymInt(2)));
  } else {
    // aten::select_copy.int_out(Tensor self, int dim, SymInt index, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_select_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, c10::SymInt index) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::select_copy_symint_out(out, self, dim, index);
    };
    return wrap(dispatch_select_copy_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toSymInt(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// detach_copy
static PyObject * THPVariable_detach_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "detach_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::detach_copy(Tensor self) -> Tensor
    
    auto dispatch_detach_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::detach_copy(self);
    };
    return wrap(dispatch_detach_copy(_r.tensor(0)));
  } else {
    // aten::detach_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_detach_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::detach_copy_out(out, self);
    };
    return wrap(dispatch_detach_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// slice_copy
static PyObject * THPVariable_slice_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "slice_copy(Tensor input, int64_t dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<6> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(5)) {
    // aten::slice_copy.Tensor(Tensor self, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor
    
    auto dispatch_slice_copy = [](const at::Tensor & self, int64_t dim, ::std::optional<c10::SymInt> start, ::std::optional<c10::SymInt> end, c10::SymInt step) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::slice_copy_symint(self, dim, start, end, step);
    };
    return wrap(dispatch_slice_copy(_r.tensor(0), _r.toInt64(1), _r.toSymIntOptional(2), _r.toSymIntOptional(3), _r.toSymInt(4)));
  } else {
    // aten::slice_copy.Tensor_out(Tensor self, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_slice_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim, ::std::optional<c10::SymInt> start, ::std::optional<c10::SymInt> end, c10::SymInt step) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::slice_copy_symint_out(out, self, dim, start, end, step);
    };
    return wrap(dispatch_slice_copy_out(_r.tensor(5), _r.tensor(0), _r.toInt64(1), _r.toSymIntOptional(2), _r.toSymIntOptional(3), _r.toSymInt(4)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// split_copy
static PyObject * THPVariable_split_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "split_copy(Tensor input, SymInt split_size, int64_t dim=0, *, TensorList out=None)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::split_copy.Tensor(Tensor self, SymInt split_size, int dim=0) -> Tensor[]
    
    auto dispatch_split_copy = [](const at::Tensor & self, c10::SymInt split_size, int64_t dim) -> ::std::vector<at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::split_copy_symint(self, split_size, dim);
    };
    return wrap(dispatch_split_copy(_r.tensor(0), _r.toSymInt(1), _r.toInt64(2)));
  } else {
    // aten::split_copy.Tensor_out(Tensor self, SymInt split_size, int dim=0, *, Tensor(a!)[] out) -> ()
    
    auto dispatch_split_copy_out = [](at::TensorList out, const at::Tensor & self, c10::SymInt split_size, int64_t dim) -> void {
      pybind11::gil_scoped_release no_gil;
      at::split_copy_symint_out(out, self, split_size, dim);
    };
    dispatch_split_copy_out(_r.tensorlist(3), _r.tensor(0), _r.toSymInt(1), _r.toInt64(2));
    Py_RETURN_NONE;
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// split_with_sizes_copy
static PyObject * THPVariable_split_with_sizes_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "split_with_sizes_copy(Tensor input, SymIntArrayRef split_sizes, int64_t dim=0, *, TensorList out=None)",
  }, /*traceable=*/false);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::split_with_sizes_copy(Tensor self, SymInt[] split_sizes, int dim=0) -> Tensor[]
    
    auto dispatch_split_with_sizes_copy = [](const at::Tensor & self, c10::SymIntArrayRef split_sizes, int64_t dim) -> ::std::vector<at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::split_with_sizes_copy_symint(self, split_sizes, dim);
    };
    return wrap(dispatch_split_with_sizes_copy(_r.tensor(0), _r.symintlist(1), _r.toInt64(2)));
  } else {
    // aten::split_with_sizes_copy.out(Tensor self, SymInt[] split_sizes, int dim=0, *, Tensor(a!)[] out) -> ()
    
    auto dispatch_split_with_sizes_copy_out = [](at::TensorList out, const at::Tensor & self, c10::SymIntArrayRef split_sizes, int64_t dim) -> void {
      pybind11::gil_scoped_release no_gil;
      at::split_with_sizes_copy_symint_out(out, self, split_sizes, dim);
    };
    dispatch_split_with_sizes_copy_out(_r.tensorlist(3), _r.tensor(0), _r.symintlist(1), _r.toInt64(2));
    Py_RETURN_NONE;
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// squeeze_copy
static PyObject * THPVariable_squeeze_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "squeeze_copy(Tensor input, *, Tensor out=None)",
    "squeeze_copy(Tensor input, int64_t dim, *, Tensor out=None)",
    "squeeze_copy(Tensor input, IntArrayRef dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(1)) {
        // aten::squeeze_copy(Tensor self) -> Tensor
        
        auto dispatch_squeeze_copy = [](const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::squeeze_copy(self);
        };
        return wrap(dispatch_squeeze_copy(_r.tensor(0)));
      } else {
        // aten::squeeze_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_squeeze_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::squeeze_copy_out(out, self);
        };
        return wrap(dispatch_squeeze_copy_out(_r.tensor(1), _r.tensor(0)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::squeeze_copy.dim(Tensor self, int dim) -> Tensor
        
        auto dispatch_squeeze_copy = [](const at::Tensor & self, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::squeeze_copy(self, dim);
        };
        return wrap(dispatch_squeeze_copy(_r.tensor(0), _r.toInt64(1)));
      } else {
        // aten::squeeze_copy.dim_out(Tensor self, int dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_squeeze_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::squeeze_copy_out(out, self, dim);
        };
        return wrap(dispatch_squeeze_copy_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
      }
    }
    case 2: {
      if (_r.isNone(2)) {
        // aten::squeeze_copy.dims(Tensor self, int[] dim) -> Tensor
        
        auto dispatch_squeeze_copy = [](const at::Tensor & self, at::IntArrayRef dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::squeeze_copy(self, dim);
        };
        return wrap(dispatch_squeeze_copy(_r.tensor(0), _r.intlist(1)));
      } else {
        // aten::squeeze_copy.dims_out(Tensor self, int[] dim, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_squeeze_copy_out = [](at::Tensor out, const at::Tensor & self, at::IntArrayRef dim) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::squeeze_copy_out(out, self, dim);
        };
        return wrap(dispatch_squeeze_copy_out(_r.tensor(2), _r.tensor(0), _r.intlist(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// t_copy
static PyObject * THPVariable_t_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "t_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::t_copy(Tensor self) -> Tensor
    
    auto dispatch_t_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::t_copy(self);
    };
    return wrap(dispatch_t_copy(_r.tensor(0)));
  } else {
    // aten::t_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_t_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::t_copy_out(out, self);
    };
    return wrap(dispatch_t_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// transpose_copy
static PyObject * THPVariable_transpose_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "transpose_copy(Tensor input, int64_t dim0, int64_t dim1, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(3)) {
    // aten::transpose_copy.int(Tensor self, int dim0, int dim1) -> Tensor
    
    auto dispatch_transpose_copy = [](const at::Tensor & self, int64_t dim0, int64_t dim1) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::transpose_copy(self, dim0, dim1);
    };
    return wrap(dispatch_transpose_copy(_r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  } else {
    // aten::transpose_copy.int_out(Tensor self, int dim0, int dim1, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_transpose_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim0, int64_t dim1) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::transpose_copy_out(out, self, dim0, dim1);
    };
    return wrap(dispatch_transpose_copy_out(_r.tensor(3), _r.tensor(0), _r.toInt64(1), _r.toInt64(2)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unsqueeze_copy
static PyObject * THPVariable_unsqueeze_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unsqueeze_copy(Tensor input, int64_t dim, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::unsqueeze_copy(Tensor self, int dim) -> Tensor
    
    auto dispatch_unsqueeze_copy = [](const at::Tensor & self, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::unsqueeze_copy(self, dim);
    };
    return wrap(dispatch_unsqueeze_copy(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::unsqueeze_copy.out(Tensor self, int dim, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_unsqueeze_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dim) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::unsqueeze_copy_out(out, self, dim);
    };
    return wrap(dispatch_unsqueeze_copy_out(_r.tensor(2), _r.tensor(0), _r.toInt64(1)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _indices_copy
static PyObject * THPVariable__indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_indices_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_indices_copy(Tensor self) -> Tensor
    
    auto dispatch__indices_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_indices_copy(self);
    };
    return wrap(dispatch__indices_copy(_r.tensor(0)));
  } else {
    // aten::_indices_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__indices_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_indices_copy_out(out, self);
    };
    return wrap(dispatch__indices_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _values_copy
static PyObject * THPVariable__values_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_values_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::_values_copy(Tensor self) -> Tensor
    
    auto dispatch__values_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_values_copy(self);
    };
    return wrap(dispatch__values_copy(_r.tensor(0)));
  } else {
    // aten::_values_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch__values_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::_values_copy_out(out, self);
    };
    return wrap(dispatch__values_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// indices_copy
static PyObject * THPVariable_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "indices_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::indices_copy(Tensor self) -> Tensor
    
    auto dispatch_indices_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::indices_copy(self);
    };
    return wrap(dispatch_indices_copy(_r.tensor(0)));
  } else {
    // aten::indices_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_indices_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::indices_copy_out(out, self);
    };
    return wrap(dispatch_indices_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// values_copy
static PyObject * THPVariable_values_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "values_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::values_copy(Tensor self) -> Tensor
    
    auto dispatch_values_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::values_copy(self);
    };
    return wrap(dispatch_values_copy(_r.tensor(0)));
  } else {
    // aten::values_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_values_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::values_copy_out(out, self);
    };
    return wrap(dispatch_values_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// crow_indices_copy
static PyObject * THPVariable_crow_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "crow_indices_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::crow_indices_copy(Tensor self) -> Tensor
    
    auto dispatch_crow_indices_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::crow_indices_copy(self);
    };
    return wrap(dispatch_crow_indices_copy(_r.tensor(0)));
  } else {
    // aten::crow_indices_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_crow_indices_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::crow_indices_copy_out(out, self);
    };
    return wrap(dispatch_crow_indices_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// col_indices_copy
static PyObject * THPVariable_col_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "col_indices_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::col_indices_copy(Tensor self) -> Tensor
    
    auto dispatch_col_indices_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::col_indices_copy(self);
    };
    return wrap(dispatch_col_indices_copy(_r.tensor(0)));
  } else {
    // aten::col_indices_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_col_indices_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::col_indices_copy_out(out, self);
    };
    return wrap(dispatch_col_indices_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// ccol_indices_copy
static PyObject * THPVariable_ccol_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "ccol_indices_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::ccol_indices_copy(Tensor self) -> Tensor
    
    auto dispatch_ccol_indices_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::ccol_indices_copy(self);
    };
    return wrap(dispatch_ccol_indices_copy(_r.tensor(0)));
  } else {
    // aten::ccol_indices_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_ccol_indices_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::ccol_indices_copy_out(out, self);
    };
    return wrap(dispatch_ccol_indices_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// row_indices_copy
static PyObject * THPVariable_row_indices_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "row_indices_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::row_indices_copy(Tensor self) -> Tensor
    
    auto dispatch_row_indices_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::row_indices_copy(self);
    };
    return wrap(dispatch_row_indices_copy(_r.tensor(0)));
  } else {
    // aten::row_indices_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_row_indices_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::row_indices_copy_out(out, self);
    };
    return wrap(dispatch_row_indices_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unbind_copy
static PyObject * THPVariable_unbind_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unbind_copy(Tensor input, int64_t dim=0, *, TensorList out=None)",
  }, /*traceable=*/false);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(2)) {
    // aten::unbind_copy.int(Tensor self, int dim=0) -> Tensor[]
    
    auto dispatch_unbind_copy = [](const at::Tensor & self, int64_t dim) -> ::std::vector<at::Tensor> {
      pybind11::gil_scoped_release no_gil;
      return at::unbind_copy(self, dim);
    };
    return wrap(dispatch_unbind_copy(_r.tensor(0), _r.toInt64(1)));
  } else {
    // aten::unbind_copy.int_out(Tensor self, int dim=0, *, Tensor(a!)[] out) -> ()
    
    auto dispatch_unbind_copy_out = [](at::TensorList out, const at::Tensor & self, int64_t dim) -> void {
      pybind11::gil_scoped_release no_gil;
      at::unbind_copy_out(out, self, dim);
    };
    dispatch_unbind_copy_out(_r.tensorlist(2), _r.tensor(0), _r.toInt64(1));
    Py_RETURN_NONE;
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// view_copy
static PyObject * THPVariable_view_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "view_copy(Tensor input, ScalarType dtype, *, Tensor out=None)",
    "view_copy(Tensor input, SymIntArrayRef size, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      if (_r.isNone(2)) {
        // aten::view_copy.dtype(Tensor self, ScalarType dtype) -> Tensor
        
        auto dispatch_view_copy = [](const at::Tensor & self, at::ScalarType dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::view_copy(self, dtype);
        };
        return wrap(dispatch_view_copy(_r.tensor(0), _r.scalartype(1)));
      } else {
        // aten::view_copy.dtype_out(Tensor self, ScalarType dtype, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_view_copy_out = [](at::Tensor out, const at::Tensor & self, at::ScalarType dtype) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::view_copy_out(out, self, dtype);
        };
        return wrap(dispatch_view_copy_out(_r.tensor(2), _r.tensor(0), _r.scalartype(1)));
      }
    }
    case 1: {
      if (_r.isNone(2)) {
        // aten::view_copy(Tensor self, SymInt[] size) -> Tensor
        
        auto dispatch_view_copy = [](const at::Tensor & self, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::view_copy_symint(self, size);
        };
        return wrap(dispatch_view_copy(_r.tensor(0), _r.symintlist(1)));
      } else {
        // aten::view_copy.out(Tensor self, SymInt[] size, *, Tensor(a!) out) -> Tensor(a!)
        
        auto dispatch_view_copy_out = [](at::Tensor out, const at::Tensor & self, c10::SymIntArrayRef size) -> at::Tensor {
          pybind11::gil_scoped_release no_gil;
          return at::view_copy_symint_out(out, self, size);
        };
        return wrap(dispatch_view_copy_out(_r.tensor(2), _r.tensor(0), _r.symintlist(1)));
      }
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// unfold_copy
static PyObject * THPVariable_unfold_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "unfold_copy(Tensor input, int64_t dimension, int64_t size, int64_t step, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<5> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(4)) {
    // aten::unfold_copy(Tensor self, int dimension, int size, int step) -> Tensor
    
    auto dispatch_unfold_copy = [](const at::Tensor & self, int64_t dimension, int64_t size, int64_t step) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::unfold_copy(self, dimension, size, step);
    };
    return wrap(dispatch_unfold_copy(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3)));
  } else {
    // aten::unfold_copy.out(Tensor self, int dimension, int size, int step, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_unfold_copy_out = [](at::Tensor out, const at::Tensor & self, int64_t dimension, int64_t size, int64_t step) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::unfold_copy_out(out, self, dimension, size, step);
    };
    return wrap(dispatch_unfold_copy_out(_r.tensor(4), _r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.toInt64(3)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// alias_copy
static PyObject * THPVariable_alias_copy(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "alias_copy(Tensor input, *, Tensor out=None)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  if (_r.isNone(1)) {
    // aten::alias_copy(Tensor self) -> Tensor
    
    auto dispatch_alias_copy = [](const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::alias_copy(self);
    };
    return wrap(dispatch_alias_copy(_r.tensor(0)));
  } else {
    // aten::alias_copy.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!)
    
    auto dispatch_alias_copy_out = [](at::Tensor out, const at::Tensor & self) -> at::Tensor {
      pybind11::gil_scoped_release no_gil;
      return at::alias_copy_out(out, self);
    };
    return wrap(dispatch_alias_copy_out(_r.tensor(1), _r.tensor(0)));
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_from_padded_tensor
static PyObject * THPVariable__nested_from_padded_tensor(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_from_padded_tensor(Tensor padded, Tensor offsets, Tensor dummy, int64_t ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None, SymInt? sum_S=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_from_padded_tensor(Tensor padded, Tensor offsets, Tensor dummy, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None, SymInt? sum_S=None) -> Tensor
  
  auto dispatch__nested_from_padded_tensor = [](const at::Tensor & padded, const at::Tensor & offsets, const at::Tensor & dummy, int64_t ragged_idx, const ::std::optional<at::Tensor> & min_seqlen, const ::std::optional<at::Tensor> & max_seqlen, ::std::optional<c10::SymInt> sum_S) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_from_padded_tensor_symint(padded, offsets, dummy, ragged_idx, min_seqlen, max_seqlen, sum_S);
  };
  return wrap(dispatch__nested_from_padded_tensor(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.optionalTensor(4), _r.optionalTensor(5), _r.toSymIntOptional(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _nested_tensor_softmax_with_shape
static PyObject * THPVariable__nested_tensor_softmax_with_shape(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_nested_tensor_softmax_with_shape(Tensor input, Tensor query)",
  }, /*traceable=*/true);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_nested_tensor_softmax_with_shape(Tensor self, Tensor query) -> Tensor
  
  auto dispatch__nested_tensor_softmax_with_shape = [](const at::Tensor & self, const at::Tensor & query) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_nested_tensor_softmax_with_shape(self, query);
  };
  return wrap(dispatch__nested_tensor_softmax_with_shape(_r.tensor(0), _r.tensor(1)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _safe_softmax
static PyObject * THPVariable__safe_softmax(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_safe_softmax(Tensor input, int64_t dim, ScalarType? dtype=None)",
  }, /*traceable=*/true);

  ParsedArgs<3> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_safe_softmax(Tensor self, int dim, ScalarType? dtype=None) -> Tensor
  
  auto dispatch__safe_softmax = [](const at::Tensor & self, int64_t dim, ::std::optional<at::ScalarType> dtype) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_safe_softmax(self, dim, dtype);
  };
  return wrap(dispatch__safe_softmax(_r.tensor(0), _r.toInt64(1), _r.scalartypeOptional(2)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _transformer_encoder_layer_fwd
static PyObject * THPVariable__transformer_encoder_layer_fwd(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_transformer_encoder_layer_fwd(Tensor src, int64_t embed_dim, int64_t num_heads, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, bool use_gelu, bool norm_first, double eps, Tensor norm_weight_1, Tensor norm_bias_1, Tensor norm_weight_2, Tensor norm_bias_2, Tensor ffn_weight_1, Tensor ffn_bias_1, Tensor ffn_weight_2, Tensor ffn_bias_2, Tensor? mask=None, int64_t? mask_type=None)",
  }, /*traceable=*/true);

  ParsedArgs<20> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_transformer_encoder_layer_fwd(Tensor src, int embed_dim, int num_heads, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, bool use_gelu, bool norm_first, float eps, Tensor norm_weight_1, Tensor norm_bias_1, Tensor norm_weight_2, Tensor norm_bias_2, Tensor ffn_weight_1, Tensor ffn_bias_1, Tensor ffn_weight_2, Tensor ffn_bias_2, Tensor? mask=None, int? mask_type=None) -> Tensor
  
  auto dispatch__transformer_encoder_layer_fwd = [](const at::Tensor & src, int64_t embed_dim, int64_t num_heads, const at::Tensor & qkv_weight, const at::Tensor & qkv_bias, const at::Tensor & proj_weight, const at::Tensor & proj_bias, bool use_gelu, bool norm_first, double eps, const at::Tensor & norm_weight_1, const at::Tensor & norm_bias_1, const at::Tensor & norm_weight_2, const at::Tensor & norm_bias_2, const at::Tensor & ffn_weight_1, const at::Tensor & ffn_bias_1, const at::Tensor & ffn_weight_2, const at::Tensor & ffn_bias_2, const ::std::optional<at::Tensor> & mask, ::std::optional<int64_t> mask_type) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_transformer_encoder_layer_fwd(src, embed_dim, num_heads, qkv_weight, qkv_bias, proj_weight, proj_bias, use_gelu, norm_first, eps, norm_weight_1, norm_bias_1, norm_weight_2, norm_bias_2, ffn_weight_1, ffn_bias_1, ffn_weight_2, ffn_bias_2, mask, mask_type);
  };
  return wrap(dispatch__transformer_encoder_layer_fwd(_r.tensor(0), _r.toInt64(1), _r.toInt64(2), _r.tensor(3), _r.tensor(4), _r.tensor(5), _r.tensor(6), _r.toBool(7), _r.toBool(8), _r.toDouble(9), _r.tensor(10), _r.tensor(11), _r.tensor(12), _r.tensor(13), _r.tensor(14), _r.tensor(15), _r.tensor(16), _r.tensor(17), _r.optionalTensor(18), _r.toInt64Optional(19)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _native_multi_head_attention
static PyObject * THPVariable__native_multi_head_attention(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_native_multi_head_attention(Tensor query, Tensor key, Tensor value, int64_t embed_dim, int64_t num_head, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, Tensor? mask=None, bool need_weights=True, bool average_attn_weights=True, int64_t? mask_type=None)",
  }, /*traceable=*/true);

  ParsedArgs<13> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_native_multi_head_attention(Tensor query, Tensor key, Tensor value, int embed_dim, int num_head, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, Tensor? mask=None, bool need_weights=True, bool average_attn_weights=True, int? mask_type=None) -> (Tensor, Tensor)
  
  auto dispatch__native_multi_head_attention = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, int64_t embed_dim, int64_t num_head, const at::Tensor & qkv_weight, const at::Tensor & qkv_bias, const at::Tensor & proj_weight, const at::Tensor & proj_bias, const ::std::optional<at::Tensor> & mask, bool need_weights, bool average_attn_weights, ::std::optional<int64_t> mask_type) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_native_multi_head_attention(query, key, value, embed_dim, num_head, qkv_weight, qkv_bias, proj_weight, proj_bias, mask, need_weights, average_attn_weights, mask_type);
  };
  return wrap(dispatch__native_multi_head_attention(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.tensor(5), _r.tensor(6), _r.tensor(7), _r.tensor(8), _r.optionalTensor(9), _r.toBool(10), _r.toBool(11), _r.toInt64Optional(12)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fused_sdp_choice
static PyObject * THPVariable__fused_sdp_choice(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fused_sdp_choice(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, double dropout_p=0.0, bool is_causal=False, *, double? scale=None, bool enable_gqa=False)",
  }, /*traceable=*/false);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fused_sdp_choice(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, *, float? scale=None, bool enable_gqa=False) -> int
  
  auto dispatch__fused_sdp_choice = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, const ::std::optional<at::Tensor> & attn_mask, double dropout_p, bool is_causal, ::std::optional<double> scale, bool enable_gqa) -> int64_t {
    pybind11::gil_scoped_release no_gil;
    return at::_fused_sdp_choice(query, key, value, attn_mask, dropout_p, is_causal, scale, enable_gqa);
  };
  return wrap(dispatch__fused_sdp_choice(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toDouble(4), _r.toBool(5), _r.toDoubleOptional(6), _r.toBool(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_dot_product_attention_math
static PyObject * THPVariable__scaled_dot_product_attention_math(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_scaled_dot_product_attention_math(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, double dropout_p=0.0, bool is_causal=False, Tensor? dropout_mask=None, *, double? scale=None, bool enable_gqa=False)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_dot_product_attention_math(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, Tensor? dropout_mask=None, *, float? scale=None, bool enable_gqa=False) -> (Tensor, Tensor)
  
  auto dispatch__scaled_dot_product_attention_math = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, const ::std::optional<at::Tensor> & attn_mask, double dropout_p, bool is_causal, const ::std::optional<at::Tensor> & dropout_mask, ::std::optional<double> scale, bool enable_gqa) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_dot_product_attention_math(query, key, value, attn_mask, dropout_p, is_causal, dropout_mask, scale, enable_gqa);
  };
  return wrap(dispatch__scaled_dot_product_attention_math(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toDouble(4), _r.toBool(5), _r.optionalTensor(6), _r.toDoubleOptional(7), _r.toBool(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_dot_product_attention_math_for_mps
static PyObject * THPVariable__scaled_dot_product_attention_math_for_mps(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_scaled_dot_product_attention_math_for_mps(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, double dropout_p=0.0, bool is_causal=False, Tensor? dropout_mask=None, *, double? scale=None)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_dot_product_attention_math_for_mps(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, Tensor? dropout_mask=None, *, float? scale=None) -> (Tensor, Tensor)
  
  auto dispatch__scaled_dot_product_attention_math_for_mps = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, const ::std::optional<at::Tensor> & attn_mask, double dropout_p, bool is_causal, const ::std::optional<at::Tensor> & dropout_mask, ::std::optional<double> scale) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_dot_product_attention_math_for_mps(query, key, value, attn_mask, dropout_p, is_causal, dropout_mask, scale);
  };
  return wrap(dispatch__scaled_dot_product_attention_math_for_mps(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toDouble(4), _r.toBool(5), _r.optionalTensor(6), _r.toDoubleOptional(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_dot_product_flash_attention
static PyObject * THPVariable__scaled_dot_product_flash_attention(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__scaled_dot_product_flash_attention_structseq();
  static PythonArgParser parser({
    "_scaled_dot_product_flash_attention(Tensor query, Tensor key, Tensor value, double dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, double? scale=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_dot_product_flash_attention(Tensor query, Tensor key, Tensor value, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor rng_state, Tensor unused, Tensor debug_attn_mask)
  
  auto dispatch__scaled_dot_product_flash_attention = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, double dropout_p, bool is_causal, bool return_debug_mask, ::std::optional<double> scale) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,c10::SymInt,c10::SymInt,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_dot_product_flash_attention(query, key, value, dropout_p, is_causal, return_debug_mask, scale);
  };
  return wrap(NamedTuple, dispatch__scaled_dot_product_flash_attention(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3), _r.toBool(4), _r.toBool(5), _r.toDoubleOptional(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_dot_product_flash_attention_for_cpu
static PyObject * THPVariable__scaled_dot_product_flash_attention_for_cpu(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__scaled_dot_product_flash_attention_for_cpu_structseq();
  static PythonArgParser parser({
    "_scaled_dot_product_flash_attention_for_cpu(Tensor query, Tensor key, Tensor value, double dropout_p=0.0, bool is_causal=False, *, Tensor? attn_mask=None, double? scale=None)",
  }, /*traceable=*/true);

  ParsedArgs<7> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_dot_product_flash_attention_for_cpu(Tensor query, Tensor key, Tensor value, float dropout_p=0.0, bool is_causal=False, *, Tensor? attn_mask=None, float? scale=None) -> (Tensor output, Tensor logsumexp)
  
  auto dispatch__scaled_dot_product_flash_attention_for_cpu = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, double dropout_p, bool is_causal, const ::std::optional<at::Tensor> & attn_mask, ::std::optional<double> scale) -> ::std::tuple<at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_dot_product_flash_attention_for_cpu(query, key, value, dropout_p, is_causal, attn_mask, scale);
  };
  return wrap(NamedTuple, dispatch__scaled_dot_product_flash_attention_for_cpu(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3), _r.toBool(4), _r.optionalTensor(5), _r.toDoubleOptional(6)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_dot_product_efficient_attention
static PyObject * THPVariable__scaled_dot_product_efficient_attention(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__scaled_dot_product_efficient_attention_structseq();
  static PythonArgParser parser({
    "_scaled_dot_product_efficient_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, double dropout_p=0.0, bool is_causal=False, *, double? scale=None)",
  }, /*traceable=*/true);

  ParsedArgs<8> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_dot_product_efficient_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, *, float? scale=None) -> (Tensor output, Tensor log_sumexp, Tensor philox_seed, Tensor philox_offset)
  
  auto dispatch__scaled_dot_product_efficient_attention = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, const ::std::optional<at::Tensor> & attn_bias, bool compute_log_sumexp, double dropout_p, bool is_causal, ::std::optional<double> scale) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_dot_product_efficient_attention(query, key, value, attn_bias, compute_log_sumexp, dropout_p, is_causal, scale);
  };
  return wrap(NamedTuple, dispatch__scaled_dot_product_efficient_attention(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toBool(4), _r.toDouble(5), _r.toBool(6), _r.toDoubleOptional(7)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _scaled_dot_product_cudnn_attention
static PyObject * THPVariable__scaled_dot_product_cudnn_attention(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PyTypeObject* NamedTuple = generated::get__scaled_dot_product_cudnn_attention_structseq();
  static PythonArgParser parser({
    "_scaled_dot_product_cudnn_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, double dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, double? scale=None)",
  }, /*traceable=*/true);

  ParsedArgs<9> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_scaled_dot_product_cudnn_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask)
  
  auto dispatch__scaled_dot_product_cudnn_attention = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, const ::std::optional<at::Tensor> & attn_bias, bool compute_log_sumexp, double dropout_p, bool is_causal, bool return_debug_mask, ::std::optional<double> scale) -> ::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,c10::SymInt,c10::SymInt,at::Tensor,at::Tensor,at::Tensor> {
    pybind11::gil_scoped_release no_gil;
    return at::_scaled_dot_product_cudnn_attention(query, key, value, attn_bias, compute_log_sumexp, dropout_p, is_causal, return_debug_mask, scale);
  };
  return wrap(NamedTuple, dispatch__scaled_dot_product_cudnn_attention(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.optionalTensor(3), _r.toBool(4), _r.toDouble(5), _r.toBool(6), _r.toBool(7), _r.toDoubleOptional(8)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _triton_scaled_dot_attention
static PyObject * THPVariable__triton_scaled_dot_attention(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_triton_scaled_dot_attention(Tensor q, Tensor k, Tensor v, double dropout_p=0.0)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_triton_scaled_dot_attention(Tensor q, Tensor k, Tensor v, float dropout_p=0.0) -> Tensor
  
  auto dispatch__triton_scaled_dot_attention = [](const at::Tensor & q, const at::Tensor & k, const at::Tensor & v, double dropout_p) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_triton_scaled_dot_attention(q, k, v, dropout_p);
  };
  return wrap(dispatch__triton_scaled_dot_attention(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toDouble(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fill_mem_eff_dropout_mask_
static PyObject * THPVariable__fill_mem_eff_dropout_mask_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fill_mem_eff_dropout_mask_(Tensor input, double dropout_p, int64_t seed, int64_t offset)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fill_mem_eff_dropout_mask_(Tensor(a!) self, float dropout_p, int seed, int offset) -> Tensor(a!)
  
  auto dispatch__fill_mem_eff_dropout_mask_ = [](at::Tensor self, double dropout_p, int64_t seed, int64_t offset) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_fill_mem_eff_dropout_mask_(self, dropout_p, seed, offset);
  };
  return wrap(dispatch__fill_mem_eff_dropout_mask_(_r.tensor(0), _r.toDouble(1), _r.toInt64(2), _r.toInt64(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _triton_multi_head_attention
static PyObject * THPVariable__triton_multi_head_attention(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_triton_multi_head_attention(Tensor query, Tensor key, Tensor value, int64_t embed_dim, int64_t num_head, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, Tensor? mask=None)",
  }, /*traceable=*/true);

  ParsedArgs<10> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_triton_multi_head_attention(Tensor query, Tensor key, Tensor value, int embed_dim, int num_head, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, Tensor? mask=None) -> Tensor
  
  auto dispatch__triton_multi_head_attention = [](const at::Tensor & query, const at::Tensor & key, const at::Tensor & value, int64_t embed_dim, int64_t num_head, const at::Tensor & qkv_weight, const at::Tensor & qkv_bias, const at::Tensor & proj_weight, const at::Tensor & proj_bias, const ::std::optional<at::Tensor> & mask) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_triton_multi_head_attention(query, key, value, embed_dim, num_head, qkv_weight, qkv_bias, proj_weight, proj_bias, mask);
  };
  return wrap(dispatch__triton_multi_head_attention(_r.tensor(0), _r.tensor(1), _r.tensor(2), _r.toInt64(3), _r.toInt64(4), _r.tensor(5), _r.tensor(6), _r.tensor(7), _r.tensor(8), _r.optionalTensor(9)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _foobar
static PyObject * THPVariable__foobar(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_foobar(Tensor input, bool arg1=True, bool arg2=True, *, bool arg3=True)",
  }, /*traceable=*/true);

  ParsedArgs<4> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_foobar(Tensor self, bool arg1=True, bool arg2=True, *, bool arg3=True) -> Tensor
  
  auto dispatch__foobar = [](const at::Tensor & self, bool arg1, bool arg2, bool arg3) -> at::Tensor {
    pybind11::gil_scoped_release no_gil;
    return at::_foobar(self, arg1, arg2, arg3);
  };
  return wrap(dispatch__foobar(_r.tensor(0), _r.toBool(1), _r.toBool(2), _r.toBool(3)));
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _fused_adam_
static PyObject * THPVariable__fused_adam_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fused_adam_(TensorList self, TensorList grads, TensorList exp_avgs, TensorList exp_avg_sqs, TensorList max_exp_avg_sqs, TensorList state_steps, *, Tensor lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None)",
    "_fused_adam_(TensorList self, TensorList grads, TensorList exp_avgs, TensorList exp_avg_sqs, TensorList max_exp_avg_sqs, TensorList state_steps, *, double lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None)",
  }, /*traceable=*/false);

  ParsedArgs<15> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_fused_adam_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, Tensor lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
      
      auto dispatch__fused_adam_ = [](at::TensorList self, at::TensorList grads, at::TensorList exp_avgs, at::TensorList exp_avg_sqs, at::TensorList max_exp_avg_sqs, at::TensorList state_steps, const at::Tensor & lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_fused_adam_(self, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, lr, beta1, beta2, weight_decay, eps, amsgrad, maximize, grad_scale, found_inf);
      };
      dispatch__fused_adam_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensorlist(3), _r.tensorlist(4), _r.tensorlist(5), _r.tensor(6), _r.toDouble(7), _r.toDouble(8), _r.toDouble(9), _r.toDouble(10), _r.toBool(11), _r.toBool(12), _r.optionalTensor(13), _r.optionalTensor(14));
      Py_RETURN_NONE;
    }
    case 1: {
      // aten::_fused_adam_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, float lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
      
      auto dispatch__fused_adam_ = [](at::TensorList self, at::TensorList grads, at::TensorList exp_avgs, at::TensorList exp_avg_sqs, at::TensorList max_exp_avg_sqs, at::TensorList state_steps, double lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_fused_adam_(self, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, lr, beta1, beta2, weight_decay, eps, amsgrad, maximize, grad_scale, found_inf);
      };
      dispatch__fused_adam_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensorlist(3), _r.tensorlist(4), _r.tensorlist(5), _r.toDouble(6), _r.toDouble(7), _r.toDouble(8), _r.toDouble(9), _r.toDouble(10), _r.toBool(11), _r.toBool(12), _r.optionalTensor(13), _r.optionalTensor(14));
      Py_RETURN_NONE;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _fused_adamw_
static PyObject * THPVariable__fused_adamw_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fused_adamw_(TensorList self, TensorList grads, TensorList exp_avgs, TensorList exp_avg_sqs, TensorList max_exp_avg_sqs, TensorList state_steps, *, Tensor lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None)",
    "_fused_adamw_(TensorList self, TensorList grads, TensorList exp_avgs, TensorList exp_avg_sqs, TensorList max_exp_avg_sqs, TensorList state_steps, *, double lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None)",
  }, /*traceable=*/false);

  ParsedArgs<15> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_fused_adamw_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, Tensor lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
      
      auto dispatch__fused_adamw_ = [](at::TensorList self, at::TensorList grads, at::TensorList exp_avgs, at::TensorList exp_avg_sqs, at::TensorList max_exp_avg_sqs, at::TensorList state_steps, const at::Tensor & lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_fused_adamw_(self, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, lr, beta1, beta2, weight_decay, eps, amsgrad, maximize, grad_scale, found_inf);
      };
      dispatch__fused_adamw_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensorlist(3), _r.tensorlist(4), _r.tensorlist(5), _r.tensor(6), _r.toDouble(7), _r.toDouble(8), _r.toDouble(9), _r.toDouble(10), _r.toBool(11), _r.toBool(12), _r.optionalTensor(13), _r.optionalTensor(14));
      Py_RETURN_NONE;
    }
    case 1: {
      // aten::_fused_adamw_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, float lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
      
      auto dispatch__fused_adamw_ = [](at::TensorList self, at::TensorList grads, at::TensorList exp_avgs, at::TensorList exp_avg_sqs, at::TensorList max_exp_avg_sqs, at::TensorList state_steps, double lr, double beta1, double beta2, double weight_decay, double eps, bool amsgrad, bool maximize, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_fused_adamw_(self, grads, exp_avgs, exp_avg_sqs, max_exp_avg_sqs, state_steps, lr, beta1, beta2, weight_decay, eps, amsgrad, maximize, grad_scale, found_inf);
      };
      dispatch__fused_adamw_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensorlist(3), _r.tensorlist(4), _r.tensorlist(5), _r.toDouble(6), _r.toDouble(7), _r.toDouble(8), _r.toDouble(9), _r.toDouble(10), _r.toBool(11), _r.toBool(12), _r.optionalTensor(13), _r.optionalTensor(14));
      Py_RETURN_NONE;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

\
// _fused_sgd_
static PyObject * THPVariable__fused_sgd_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fused_sgd_(TensorList self, TensorList grads, TensorList momentum_buffer_list, *, double weight_decay, double momentum, Tensor lr, double dampening, bool nesterov, bool maximize, bool is_first_step, Tensor? grad_scale=None, Tensor? found_inf=None)",
    "_fused_sgd_(TensorList self, TensorList grads, TensorList momentum_buffer_list, *, double weight_decay, double momentum, double lr, double dampening, bool nesterov, bool maximize, bool is_first_step, Tensor? grad_scale=None, Tensor? found_inf=None)",
  }, /*traceable=*/false);

  ParsedArgs<12> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  switch (_r.idx) {
    case 0: {
      // aten::_fused_sgd_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] momentum_buffer_list, *, float weight_decay, float momentum, Tensor lr, float dampening, bool nesterov, bool maximize, bool is_first_step, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
      
      auto dispatch__fused_sgd_ = [](at::TensorList self, at::TensorList grads, at::TensorList momentum_buffer_list, double weight_decay, double momentum, const at::Tensor & lr, double dampening, bool nesterov, bool maximize, bool is_first_step, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_fused_sgd_(self, grads, momentum_buffer_list, weight_decay, momentum, lr, dampening, nesterov, maximize, is_first_step, grad_scale, found_inf);
      };
      dispatch__fused_sgd_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.toDouble(3), _r.toDouble(4), _r.tensor(5), _r.toDouble(6), _r.toBool(7), _r.toBool(8), _r.toBool(9), _r.optionalTensor(10), _r.optionalTensor(11));
      Py_RETURN_NONE;
    }
    case 1: {
      // aten::_fused_sgd_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] momentum_buffer_list, *, float weight_decay, float momentum, float lr, float dampening, bool nesterov, bool maximize, bool is_first_step, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
      
      auto dispatch__fused_sgd_ = [](at::TensorList self, at::TensorList grads, at::TensorList momentum_buffer_list, double weight_decay, double momentum, double lr, double dampening, bool nesterov, bool maximize, bool is_first_step, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
        pybind11::gil_scoped_release no_gil;
        at::_fused_sgd_(self, grads, momentum_buffer_list, weight_decay, momentum, lr, dampening, nesterov, maximize, is_first_step, grad_scale, found_inf);
      };
      dispatch__fused_sgd_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.toDouble(3), _r.toDouble(4), _r.toDouble(5), _r.toDouble(6), _r.toBool(7), _r.toBool(8), _r.toBool(9), _r.optionalTensor(10), _r.optionalTensor(11));
      Py_RETURN_NONE;
    }
  }
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _fused_adagrad_
static PyObject * THPVariable__fused_adagrad_(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_fused_adagrad_(TensorList self, TensorList grads, TensorList state_sums, TensorList state_steps, *, double lr, double lr_decay, double weight_decay, double eps, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None)",
  }, /*traceable=*/false);

  ParsedArgs<11> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_fused_adagrad_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] state_sums, Tensor(d!)[] state_steps, *, float lr, float lr_decay, float weight_decay, float eps, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> ()
  
  auto dispatch__fused_adagrad_ = [](at::TensorList self, at::TensorList grads, at::TensorList state_sums, at::TensorList state_steps, double lr, double lr_decay, double weight_decay, double eps, bool maximize, const ::std::optional<at::Tensor> & grad_scale, const ::std::optional<at::Tensor> & found_inf) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_fused_adagrad_(self, grads, state_sums, state_steps, lr, lr_decay, weight_decay, eps, maximize, grad_scale, found_inf);
  };
  dispatch__fused_adagrad_(_r.tensorlist(0), _r.tensorlist(1), _r.tensorlist(2), _r.tensorlist(3), _r.toDouble(4), _r.toDouble(5), _r.toDouble(6), _r.toDouble(7), _r.toBool(8), _r.optionalTensor(9), _r.optionalTensor(10));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

// _propagate_xla_data
static PyObject * THPVariable__propagate_xla_data(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  HANDLE_TH_ERRORS
  static PythonArgParser parser({
    "_propagate_xla_data(Tensor input, Tensor output)",
  }, /*traceable=*/false);

  ParsedArgs<2> parsed_args;
  auto _r = parser.parse(nullptr, args, kwargs, parsed_args);
  if(_r.has_torch_function()) {
    return handle_torch_function(_r, nullptr, args, kwargs, THPVariableFunctionsModule, "torch");
  }
  // aten::_propagate_xla_data(Tensor input, Tensor output) -> ()
  
  auto dispatch__propagate_xla_data = [](const at::Tensor & input, const at::Tensor & output) -> void {
    pybind11::gil_scoped_release no_gil;
    at::_propagate_xla_data(input, output);
  };
  dispatch__propagate_xla_data(_r.tensor(0), _r.tensor(1));
  Py_RETURN_NONE;
  Py_RETURN_NONE;
  END_HANDLE_TH_ERRORS
}

} // namespace torch::autograd
