/*
* Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
// ==================================================== Random ========================================================
at::Tensor& random_(at::Tensor& self, c10::optional<at::Generator> generator);
at::Tensor& random_from_to(at::Tensor& self, int64_t from, optional<int64_t> to, c10::optional<at::Generator> generator);
at::Tensor& random_to(at::Tensor& self, int64_t to, c10::optional<at::Generator> generator);
// ==================================================== Uniform =======================================================
at::Tensor& uniform_(at::Tensor& self, double from, double to, c10::optional<at::Generator> generator);
// ==================================================== Normal ========================================================
at::Tensor& normal_(at::Tensor& self, double mean, double std, c10::optional<at::Generator> generator);
at::Tensor& normal_Tensor_float_out(at::Tensor& output, const at::Tensor& mean, double std, c10::optional<at::Generator> gen);
at::Tensor& normal_float_Tensor_out(at::Tensor& output, double mean, const at::Tensor& std, c10::optional<at::Generator> gen);
at::Tensor& normal_Tensor_Tensor_out(at::Tensor& output, const at::Tensor& mean, const at::Tensor& std, c10::optional<at::Generator> gen);
at::Tensor normal_Tensor_float(const at::Tensor& mean, double std, c10::optional<at::Generator> gen);
at::Tensor normal_float_Tensor(double mean, const at::Tensor& std, c10::optional<at::Generator> gen);
at::Tensor normal_Tensor_Tensor(const at::Tensor& mean, const at::Tensor& std, c10::optional<at::Generator> gen);
// ==================================================== Cauchy ========================================================
at::Tensor& cauchy_(at::Tensor& self, double median, double sigma, c10::optional<at::Generator> generator);
// ================================================== LogNormal =======================================================
at::Tensor& log_normal_(at::Tensor& self, double mean, double std, c10::optional<at::Generator> gen);
// ================================================== Geometric =======================================================
at::Tensor& geometric_(at::Tensor& self, double p, c10::optional<at::Generator> gen);
// ================================================== Exponential =====================================================
at::Tensor& exponential_(at::Tensor& self, double lambda, c10::optional<at::Generator> gen);
// ================================================Encrypt/Decrypt=====================================================
Tensor encrypt(Tensor input, Tensor output, Tensor key, const std::string& cipher, const std::string& mode);
Tensor decrypt(Tensor input, Tensor output, Tensor key, const std::string& cipher, const std::string& mode);