forked from EvergreenCrypto/docker-finance
root: macro: web: crypto: refactor class name
Intended to be used only for RNG.
This commit is contained in:
@@ -56,19 +56,19 @@ namespace web
|
|||||||
namespace internal
|
namespace internal
|
||||||
{
|
{
|
||||||
//! \ingroup cpp_macro_impl
|
//! \ingroup cpp_macro_impl
|
||||||
//! \brief Cryptographical macro class
|
//! \brief RNG analysis macro
|
||||||
//! \since docker-finance 1.0.0
|
//! \since docker-finance 1.0.0
|
||||||
class Crypto final
|
class Random final
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Crypto() = default;
|
Random() = default;
|
||||||
~Crypto() = default;
|
~Random() = default;
|
||||||
|
|
||||||
Crypto(const Crypto&) = default;
|
Random(const Random&) = default;
|
||||||
Crypto& operator=(const Crypto&) = default;
|
Random& operator=(const Random&) = default;
|
||||||
|
|
||||||
Crypto(Crypto&&) = default;
|
Random(Random&&) = default;
|
||||||
Crypto& operator=(Crypto&&) = default;
|
Random& operator=(Random&&) = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! \since docker-finance 1.0.0
|
//! \since docker-finance 1.0.0
|
||||||
@@ -115,7 +115,7 @@ class Crypto final
|
|||||||
//! \brief Make graph of values from given canvas data
|
//! \brief Make graph of values from given canvas data
|
||||||
//! \param canvas Previously instantiated canvas
|
//! \param canvas Previously instantiated canvas
|
||||||
//! \param data Populated canvas data for graph
|
//! \param data Populated canvas data for graph
|
||||||
static void graph_value(::TCanvas* canvas, const Crypto::CanvasData& data)
|
static void graph_value(::TCanvas* canvas, const Random::CanvasData& data)
|
||||||
{
|
{
|
||||||
// Graph: w/ lines
|
// Graph: w/ lines
|
||||||
auto* gr1 = new ::TGraph(data.n, data.x.data(), data.y.data());
|
auto* gr1 = new ::TGraph(data.n, data.x.data(), data.y.data());
|
||||||
@@ -148,7 +148,7 @@ class Crypto final
|
|||||||
//! \brief Make graph of value occurrences from given canvas data
|
//! \brief Make graph of value occurrences from given canvas data
|
||||||
//! \param canvas Previously instantiated canvas
|
//! \param canvas Previously instantiated canvas
|
||||||
//! \param data Populated canvas data for graph
|
//! \param data Populated canvas data for graph
|
||||||
static void graph_frequency(::TCanvas* canvas, const Crypto::CanvasData& data)
|
static void graph_frequency(::TCanvas* canvas, const Random::CanvasData& data)
|
||||||
{
|
{
|
||||||
// x = [0..0xffffffff]
|
// x = [0..0xffffffff]
|
||||||
// y = frequency of number (max = nbins)
|
// y = frequency of number (max = nbins)
|
||||||
@@ -186,7 +186,7 @@ class Crypto final
|
|||||||
//! \brief Make 2D graph of prime numbers within given canvas data
|
//! \brief Make 2D graph of prime numbers within given canvas data
|
||||||
//! \param canvas Previously instantiated canvas
|
//! \param canvas Previously instantiated canvas
|
||||||
//! \param data Populated canvas data for graph
|
//! \param data Populated canvas data for graph
|
||||||
static void graph_prime(::TCanvas* canvas, const Crypto::CanvasData& data)
|
static void graph_prime(::TCanvas* canvas, const Random::CanvasData& data)
|
||||||
{
|
{
|
||||||
canvas->cd(4);
|
canvas->cd(4);
|
||||||
auto* gr1 = new ::TGraph2D();
|
auto* gr1 = new ::TGraph2D();
|
||||||
@@ -235,7 +235,7 @@ class Crypto final
|
|||||||
template <typename t_generator>
|
template <typename t_generator>
|
||||||
static void histo_gauss(
|
static void histo_gauss(
|
||||||
::TCanvas* canvas,
|
::TCanvas* canvas,
|
||||||
const Crypto::CanvasData& data,
|
const Random::CanvasData& data,
|
||||||
const t_generator& generator)
|
const t_generator& generator)
|
||||||
{
|
{
|
||||||
canvas->cd(1);
|
canvas->cd(1);
|
||||||
@@ -250,7 +250,7 @@ class Crypto final
|
|||||||
5.0); // TODO(unassigned): looks the best, would prefer more mathematical soundness
|
5.0); // TODO(unassigned): looks the best, would prefer more mathematical soundness
|
||||||
|
|
||||||
// Shove a CSPRNG into a Gaussian distribution
|
// Shove a CSPRNG into a Gaussian distribution
|
||||||
const Crypto::Generator<decltype(generator), uint32_t> gen(generator);
|
const Random::Generator<decltype(generator), uint32_t> gen(generator);
|
||||||
std::normal_distribution dist{0.0, 1.0};
|
std::normal_distribution dist{0.0, 1.0};
|
||||||
|
|
||||||
for (size_t i{}; i < data.n; ++i)
|
for (size_t i{}; i < data.n; ++i)
|
||||||
@@ -261,7 +261,7 @@ class Crypto final
|
|||||||
h1->Draw();
|
h1->Draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fun_facts(::TCanvas* canvas, const Crypto::CanvasData& data)
|
static void fun_facts(::TCanvas* canvas, const Random::CanvasData& data)
|
||||||
{
|
{
|
||||||
// TODO(unassigned): percent of prime / composite
|
// TODO(unassigned): percent of prime / composite
|
||||||
|
|
||||||
@@ -305,7 +305,7 @@ class Crypto final
|
|||||||
// TODO(unassigned): put in a `Random` subdir to separate from other functions
|
// TODO(unassigned): put in a `Random` subdir to separate from other functions
|
||||||
static void rng_sample(const std::string& size)
|
static void rng_sample(const std::string& size)
|
||||||
{
|
{
|
||||||
Crypto::CanvasData data{};
|
Random::CanvasData data{};
|
||||||
|
|
||||||
// TODO(unassigned): sanitize because:
|
// TODO(unassigned): sanitize because:
|
||||||
// 1. only unsigned is desired
|
// 1. only unsigned is desired
|
||||||
@@ -315,7 +315,7 @@ class Crypto final
|
|||||||
data.y.resize(data.n);
|
data.y.resize(data.n);
|
||||||
|
|
||||||
auto random =
|
auto random =
|
||||||
([](Crypto::CanvasData /* make copy */ data, const auto& generator) {
|
([](Random::CanvasData /* make copy */ data, const auto& generator) {
|
||||||
auto* c1 = new ::TCanvas(
|
auto* c1 = new ::TCanvas(
|
||||||
std::string{"c1_" + data.title}.c_str(), "RNG analysis");
|
std::string{"c1_" + data.title}.c_str(), "RNG analysis");
|
||||||
|
|
||||||
@@ -330,17 +330,17 @@ class Crypto final
|
|||||||
data.y.at(i) = generator();
|
data.y.at(i) = generator();
|
||||||
}
|
}
|
||||||
|
|
||||||
Crypto::graph_value(c1, data);
|
Random::graph_value(c1, data);
|
||||||
Crypto::graph_frequency(c1, data);
|
Random::graph_frequency(c1, data);
|
||||||
Crypto::graph_prime(c1, data);
|
Random::graph_prime(c1, data);
|
||||||
|
|
||||||
auto* c2 = new ::TCanvas(
|
auto* c2 = new ::TCanvas(
|
||||||
std::string{"c2_" + data.title}.c_str(), "RNG analysis");
|
std::string{"c2_" + data.title}.c_str(), "RNG analysis");
|
||||||
|
|
||||||
// TODO(unassigned): shift plots to the right so there's more space on the left and less on the right
|
// TODO(unassigned): shift plots to the right so there's more space on the left and less on the right
|
||||||
c2->Divide(0, 2);
|
c2->Divide(0, 2);
|
||||||
Crypto::histo_gauss<decltype(generator)>(c2, data, generator);
|
Random::histo_gauss<decltype(generator)>(c2, data, generator);
|
||||||
Crypto::fun_facts(c2, data);
|
Random::fun_facts(c2, data);
|
||||||
});
|
});
|
||||||
|
|
||||||
namespace utility = ::docker_finance::macro::internal::utility;
|
namespace utility = ::docker_finance::macro::internal::utility;
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class Server final
|
|||||||
internal::Command::load({"web/internal/crypto.C"});
|
internal::Command::load({"web/internal/crypto.C"});
|
||||||
internal::g_HTTPServer->RegisterCommand(
|
internal::g_HTTPServer->RegisterCommand(
|
||||||
"/rng_sample",
|
"/rng_sample",
|
||||||
"::docker_finance::macro::web::internal::Crypto::rng_sample(\"%arg1%"
|
"::docker_finance::macro::web::internal::Random::rng_sample(\"%arg1%"
|
||||||
"\")");
|
"\")");
|
||||||
|
|
||||||
internal::Command::load({"web/internal/meta.C"});
|
internal::Command::load({"web/internal/meta.C"});
|
||||||
|
|||||||
Reference in New Issue
Block a user