Skip to content

Commit c2ada46

Browse files
committed
Handle more warnings and improve syntax
1 parent 52ec883 commit c2ada46

10 files changed

Lines changed: 119 additions & 25 deletions

examples/example008_miller_rabin_prime.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ namespace local_example008_miller_rabin_prime
4343
using random_engine1_type = std::linear_congruential_engine<std::uint32_t, UINT32_C(48271), UINT32_C(0), UINT32_C(2147483647)>;
4444
using random_engine2_type = std::mt19937;
4545

46+
auto example008_miller_rabin_prime_run() -> bool;
47+
4648
auto example008_miller_rabin_prime_run() -> bool
4749
{
4850
// Use a pseudo-random seed for this test.
@@ -96,6 +98,8 @@ namespace local_example008_miller_rabin_prime
9698
return result_is_ok;
9799
}
98100

101+
auto example008_miller_rabin_prime_check_known_primes() -> bool;
102+
99103
auto example008_miller_rabin_prime_check_known_primes() -> bool
100104
{
101105
#if !defined(UINTWIDE_T_REDUCE_TEST_DEPTH)

examples/example009_timed_mul.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ namespace local_timed_mul
4949
using big_uint_type = ::math::wide_integer::uintwide_t<wide_integer_test9_digits2>;
5050
#endif
5151

52+
auto local_a() -> std::vector<big_uint_type>&;
53+
5254
auto local_a() -> std::vector<big_uint_type>&
5355
{
5456
static std::vector<big_uint_type>
@@ -60,6 +62,8 @@ namespace local_timed_mul
6062
return my_local_a;
6163
}
6264

65+
auto local_b() -> std::vector<big_uint_type>&;
66+
6367
auto local_b() -> std::vector<big_uint_type>&
6468
{
6569
static std::vector<big_uint_type> my_local_b(local_a().size());

examples/example009a_timed_mul_4_by_4.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ namespace local_timed_mul_4_by_4
4747
using big_uint_type = ::math::wide_integer::uintwide_t<static_cast<math::wide_integer::size_t>(UINT32_C(128))>;
4848
#endif
4949

50+
auto local_a() -> std::vector<big_uint_type>&;
51+
5052
auto local_a() -> std::vector<big_uint_type>&
5153
{
5254
static std::vector<big_uint_type>
@@ -58,6 +60,8 @@ namespace local_timed_mul_4_by_4
5860
return my_local_a;
5961
}
6062

63+
auto local_b() -> std::vector<big_uint_type>&;
64+
6165
auto local_b() -> std::vector<big_uint_type>&
6266
{
6367
static std::vector<big_uint_type> my_local_b(local_a().size());

examples/example009b_timed_mul_8_by_8.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ namespace local_timed_mul_8_by_8
4747
using big_uint_type = ::math::wide_integer::uintwide_t<static_cast<math::wide_integer::size_t>(UINT32_C(256))>;
4848
#endif
4949

50+
auto local_a() -> std::vector<big_uint_type>&;
51+
5052
auto local_a() -> std::vector<big_uint_type>&
5153
{
5254
static std::vector<big_uint_type>
@@ -58,6 +60,8 @@ namespace local_timed_mul_8_by_8
5860
return my_local_a;
5961
}
6062

63+
auto local_b() -> std::vector<big_uint_type>&;
64+
6165
auto local_b() -> std::vector<big_uint_type>&
6266
{
6367
static std::vector<big_uint_type> my_local_b(local_a().size());

math/wide_integer/uintwide_t.h

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@
88
#ifndef UINTWIDE_T_2018_10_02_H // NOLINT(llvm-header-guard)
99
#define UINTWIDE_T_2018_10_02_H
1010

11-
#if defined(__GNUC__)
12-
#pragma GCC diagnostic push
13-
#pragma GCC diagnostic ignored "-Wmissing-declarations"
14-
#endif
15-
1611
#if ((__cplusplus < 202002L) || (defined(__GNUC__) && defined(__AVR__)))
1712
#include <ciso646>
1813
#else
@@ -2456,20 +2451,18 @@
24562451
WIDE_INTEGER_NODISCARD constexpr auto representation() const -> const representation_type& { return values; }
24572452
WIDE_INTEGER_NODISCARD constexpr auto crepresentation() const -> const representation_type& { return values; }
24582453

2459-
// Unary operators: not, plus and minus.
2454+
// Unary operators plus and minus.
24602455
constexpr auto operator+() const -> const uintwide_t& { return *this; }
24612456
constexpr auto operator-() const -> uintwide_t { uintwide_t tmp(*this); tmp.negate(); return tmp; }
24622457

24632458
constexpr auto operator+=(const uintwide_t& other) -> uintwide_t&
24642459
{
24652460
if(this == &other)
24662461
{
2467-
const uintwide_t self(other); // NOLINT(performance-unnecessary-copy-initialization)
2468-
24692462
// Unary addition function.
24702463
const auto carry = eval_add_n(values.begin(), // LCOV_EXCL_LINE
24712464
values.cbegin(),
2472-
self.values.cbegin(),
2465+
other.values.cbegin(),
24732466
static_cast<unsigned_fast_type>(number_of_limbs),
24742467
static_cast<limb_type>(UINT8_C(0)));
24752468

@@ -2515,9 +2508,7 @@
25152508
{
25162509
if(this == &other)
25172510
{
2518-
const uintwide_t other_as_self_copy(other); // NOLINT(performance-unnecessary-copy-initialization)
2519-
2520-
eval_mul_unary(*this, other_as_self_copy);
2511+
eval_mul_unary(*this, uintwide_t(other)); // NOLINT(performance-unnecessary-copy-initialization)
25212512
}
25222513
else
25232514
{
@@ -5082,15 +5073,41 @@
50825073
// expression [(u[uj] * b + u[uj - 1] - q_hat * v[vj0 - 1]) * b]
50835074
// exceeds the range of uintwide_t.
50845075

5085-
for(auto t = static_cast<double_limb_type>(u_j_j1 - static_cast<double_limb_type>(q_hat * static_cast<double_limb_type>(vv_at_vj0)));
5086-
;
5087-
t = static_cast<double_limb_type>(t + vv_at_vj0), --q_hat)
50885076
{
5089-
if( (detail::make_hi<limb_type>(t) != static_cast<limb_type>(UINT8_C(0)))
5090-
|| ( static_cast<double_limb_type>(static_cast<double_limb_type>(vv_at_vj0_minus_one) * q_hat)
5091-
<= static_cast<double_limb_type>(static_cast<double_limb_type>(t << static_cast<unsigned>(std::numeric_limits<limb_type>::digits)) + *detail::advance_and_point(uu.cbegin(), static_cast<size_t>(uj - 2U)))))
5077+
const auto u_j_minus_2 =
5078+
*detail::advance_and_point(uu.cbegin(), static_cast<size_t>(uj - 2U));
5079+
5080+
auto t =
5081+
static_cast<double_limb_type>
5082+
(
5083+
u_j_j1 - static_cast<double_limb_type>(q_hat * static_cast<double_limb_type>(vv_at_vj0))
5084+
);
5085+
5086+
while(true)
50925087
{
5093-
break;
5088+
const bool t_overflow =
5089+
(detail::make_hi<limb_type>(t) != static_cast<limb_type>(UINT8_C(0)));
5090+
5091+
const auto lhs =
5092+
static_cast<double_limb_type>
5093+
(
5094+
static_cast<double_limb_type>(vv_at_vj0_minus_one) * q_hat
5095+
);
5096+
5097+
const auto rhs =
5098+
static_cast<double_limb_type>
5099+
(
5100+
static_cast<double_limb_type>(t << static_cast<unsigned>(std::numeric_limits<limb_type>::digits))
5101+
+ u_j_minus_2
5102+
);
5103+
5104+
if(t_overflow || (lhs <= rhs))
5105+
{
5106+
break;
5107+
}
5108+
5109+
t = static_cast<double_limb_type>(t + vv_at_vj0);
5110+
--q_hat;
50945111
}
50955112
}
50965113

@@ -7916,8 +7933,4 @@
79167933

79177934
WIDE_INTEGER_NAMESPACE_END
79187935

7919-
#if defined(__GNUC__)
7920-
#pragma GCC diagnostic pop
7921-
#endif
7922-
79237936
#endif // UINTWIDE_T_2018_10_02_H

test/test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
// -I/mnt/c/boost/modular_boost/boost/libs/config/include -I/mnt/c/boost/modular_boost/boost/libs/multiprecision/include
1313

1414
// When using -std=c++14/20 and g++
15-
// g++ -finline-functions -march=native -mtune=native -O3 -Werror -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wshadow -Wundef -Wunused-parameter -Wuninitialized -Wunreachable-code -Winit-self -Wzero-as-null-pointer-constant -std=c++14 -DWIDE_INTEGER_HAS_LIMB_TYPE_UINT64 -DWIDE_INTEGER_HAS_MUL_8_BY_8_UNROLL -I. -I/mnt/c/boost/boost_1_90_0 -pthread -lpthread test/test.cpp test/test_uintwide_t_boost_backend.cpp test/test_uintwide_t_edge_cases.cpp test/test_uintwide_t_examples.cpp test/test_uintwide_t_float_convert.cpp test/test_uintwide_t_int_convert.cpp test/test_uintwide_t_n_base.cpp test/test_uintwide_t_n_binary_ops_base.cpp examples/example000a_builtin_convert.cpp test/test_uintwide_t_spot_values.cpp examples/example000_numeric_limits.cpp examples/example001_mul_div.cpp examples/example001a_div_mod.cpp examples/example002_shl_shr.cpp examples/example003_sqrt.cpp examples/example003a_cbrt.cpp examples/example004_rootk_pow.cpp examples/example005_powm.cpp examples/example005a_pow_factors_of_p99.cpp examples/example006_gcd.cpp examples/example007_random_generator.cpp examples/example008_miller_rabin_prime.cpp examples/example008a_miller_rabin_prime.cpp examples/example009_timed_mul.cpp examples/example009a_timed_mul_4_by_4.cpp examples/example009b_timed_mul_8_by_8.cpp examples/example010_uint48_t.cpp examples/example011_uint24_t.cpp examples/example012_rsa_crypto.cpp examples/example013_ecdsa_sign_verify.cpp examples/example014_pi_spigot_wide.cpp -o wide_integer.exe
16-
// g++ -finline-functions -march=native -mtune=native -O3 -Werror -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wshadow -Wundef -Wunused-parameter -Wuninitialized -Wunreachable-code -Winit-self -Wzero-as-null-pointer-constant -std=c++20 -DWIDE_INTEGER_HAS_LIMB_TYPE_UINT64 -DWIDE_INTEGER_HAS_MUL_8_BY_8_UNROLL -I. -I/mnt/c/boost/boost_1_90_0 -pthread -lpthread test/test.cpp test/test_uintwide_t_boost_backend.cpp test/test_uintwide_t_edge_cases.cpp test/test_uintwide_t_examples.cpp test/test_uintwide_t_float_convert.cpp test/test_uintwide_t_int_convert.cpp test/test_uintwide_t_n_base.cpp test/test_uintwide_t_n_binary_ops_base.cpp examples/example000a_builtin_convert.cpp test/test_uintwide_t_spot_values.cpp examples/example000_numeric_limits.cpp examples/example001_mul_div.cpp examples/example001a_div_mod.cpp examples/example002_shl_shr.cpp examples/example003_sqrt.cpp examples/example003a_cbrt.cpp examples/example004_rootk_pow.cpp examples/example005_powm.cpp examples/example005a_pow_factors_of_p99.cpp examples/example006_gcd.cpp examples/example007_random_generator.cpp examples/example008_miller_rabin_prime.cpp examples/example008a_miller_rabin_prime.cpp examples/example009_timed_mul.cpp examples/example009a_timed_mul_4_by_4.cpp examples/example009b_timed_mul_8_by_8.cpp examples/example010_uint48_t.cpp examples/example011_uint24_t.cpp examples/example012_rsa_crypto.cpp examples/example013_ecdsa_sign_verify.cpp examples/example014_pi_spigot_wide.cpp -o wide_integer.exe
15+
// g++ -finline-functions -march=native -mtune=native -O3 -Werror -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wshadow -Wundef -Wunused-parameter -Wuninitialized -Wunreachable-code -Winit-self -Wmissing-declarations -Wzero-as-null-pointer-constant -std=c++14 -DWIDE_INTEGER_HAS_LIMB_TYPE_UINT64 -DWIDE_INTEGER_HAS_MUL_8_BY_8_UNROLL -I. -I/mnt/c/boost/boost_1_90_0 -pthread -lpthread test/test.cpp test/test_uintwide_t_boost_backend.cpp test/test_uintwide_t_edge_cases.cpp test/test_uintwide_t_examples.cpp test/test_uintwide_t_float_convert.cpp test/test_uintwide_t_int_convert.cpp test/test_uintwide_t_n_base.cpp test/test_uintwide_t_n_binary_ops_base.cpp examples/example000a_builtin_convert.cpp test/test_uintwide_t_spot_values.cpp examples/example000_numeric_limits.cpp examples/example001_mul_div.cpp examples/example001a_div_mod.cpp examples/example002_shl_shr.cpp examples/example003_sqrt.cpp examples/example003a_cbrt.cpp examples/example004_rootk_pow.cpp examples/example005_powm.cpp examples/example005a_pow_factors_of_p99.cpp examples/example006_gcd.cpp examples/example007_random_generator.cpp examples/example008_miller_rabin_prime.cpp examples/example008a_miller_rabin_prime.cpp examples/example009_timed_mul.cpp examples/example009a_timed_mul_4_by_4.cpp examples/example009b_timed_mul_8_by_8.cpp examples/example010_uint48_t.cpp examples/example011_uint24_t.cpp examples/example012_rsa_crypto.cpp examples/example013_ecdsa_sign_verify.cpp examples/example014_pi_spigot_wide.cpp -o wide_integer.exe
16+
// g++ -finline-functions -march=native -mtune=native -O3 -Werror -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wshadow -Wundef -Wunused-parameter -Wuninitialized -Wunreachable-code -Winit-self -Wmissing-declarations -Wzero-as-null-pointer-constant -std=c++20 -DWIDE_INTEGER_HAS_LIMB_TYPE_UINT64 -DWIDE_INTEGER_HAS_MUL_8_BY_8_UNROLL -I. -I/mnt/c/boost/boost_1_90_0 -pthread -lpthread test/test.cpp test/test_uintwide_t_boost_backend.cpp test/test_uintwide_t_edge_cases.cpp test/test_uintwide_t_examples.cpp test/test_uintwide_t_float_convert.cpp test/test_uintwide_t_int_convert.cpp test/test_uintwide_t_n_base.cpp test/test_uintwide_t_n_binary_ops_base.cpp examples/example000a_builtin_convert.cpp test/test_uintwide_t_spot_values.cpp examples/example000_numeric_limits.cpp examples/example001_mul_div.cpp examples/example001a_div_mod.cpp examples/example002_shl_shr.cpp examples/example003_sqrt.cpp examples/example003a_cbrt.cpp examples/example004_rootk_pow.cpp examples/example005_powm.cpp examples/example005a_pow_factors_of_p99.cpp examples/example006_gcd.cpp examples/example007_random_generator.cpp examples/example008_miller_rabin_prime.cpp examples/example008a_miller_rabin_prime.cpp examples/example009_timed_mul.cpp examples/example009a_timed_mul_4_by_4.cpp examples/example009b_timed_mul_8_by_8.cpp examples/example010_uint48_t.cpp examples/example011_uint24_t.cpp examples/example012_rsa_crypto.cpp examples/example013_ecdsa_sign_verify.cpp examples/example014_pi_spigot_wide.cpp -o wide_integer.exe
1717

1818
// cd /mnt/c/Users/ckorm/Documents/Ks/PC_Software/NumericalPrograms/ExtendedNumberTypes/wide_integer
1919
// cd .tidy/make

test/test_uintwide_t_edge_cases.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,15 @@ using eng_sgn_type = std::ranlux24;
194194
using eng_dig_type = std::ranlux48;
195195
using eng_flt_type = eng_dig_type;
196196

197+
auto dist_sgn () -> std::uniform_int_distribution<std::uint32_t>&;
198+
auto dist_dig_dec() -> std::uniform_int_distribution<std::uint32_t>&;
199+
auto dist_dig_hex() -> std::uniform_int_distribution<std::uint32_t>&;
200+
auto dist_dig_oct() -> std::uniform_int_distribution<std::uint32_t>&;
201+
202+
auto eng_sgn() -> eng_sgn_type&;
203+
auto eng_dig() -> eng_dig_type&;
204+
auto eng_flt() -> eng_flt_type&;
205+
197206
auto dist_sgn () -> std::uniform_int_distribution<std::uint32_t>& { static std::uniform_int_distribution<std::uint32_t> instance(UINT32_C(0), UINT32_C(1)); return instance; } // NOLINT(cert-err58-cpp,cppcoreguidelines-avoid-non-const-global-variables)
198207
auto dist_dig_dec() -> std::uniform_int_distribution<std::uint32_t>& { static std::uniform_int_distribution<std::uint32_t> instance(UINT32_C(1), UINT32_C(9)); return instance; } // NOLINT(cert-err58-cpp,cppcoreguidelines-avoid-non-const-global-variables)
199208
auto dist_dig_hex() -> std::uniform_int_distribution<std::uint32_t>& { static std::uniform_int_distribution<std::uint32_t> instance(UINT32_C(1), UINT32_C(15)); return instance; } // NOLINT(cert-err58-cpp,cppcoreguidelines-avoid-non-const-global-variables)
@@ -298,6 +307,8 @@ auto generate_wide_integer_value(bool is_positive = true,
298307
}
299308

300309
#if !defined(UINTWIDE_T_REDUCE_TEST_DEPTH)
310+
auto test_various_edge_operations() -> bool;
311+
301312
auto test_various_edge_operations() -> bool
302313
{
303314
const auto u_max_local = (std::numeric_limits<local_uint_type>::max)();
@@ -416,6 +427,8 @@ auto test_various_edge_operations() -> bool
416427
}
417428
#endif
418429

430+
auto test_various_ostream_ops() -> bool;
431+
419432
auto test_various_ostream_ops() -> bool
420433
{
421434
auto result_is_ok = true;
@@ -677,6 +690,8 @@ auto test_various_ostream_ops() -> bool
677690
return result_is_ok;
678691
}
679692

693+
auto test_ops_n_half_by_n_half() -> bool;
694+
680695
auto test_ops_n_half_by_n_half() -> bool
681696
{
682697
auto result_is_ok = true;
@@ -860,6 +875,8 @@ auto test_ops_n_half_by_n_half() -> bool
860875
return result_is_ok;
861876
}
862877

878+
auto test_various_roots_and_pow_etc() -> bool;
879+
863880
auto test_various_roots_and_pow_etc() -> bool
864881
{
865882
auto result_is_ok = true;
@@ -1071,6 +1088,8 @@ namespace local_edge_cases
10711088
};
10721089
} // namespace local_edge_cases
10731090

1091+
auto test_small_prime_and_non_prime() -> bool;
1092+
10741093
auto test_small_prime_and_non_prime() -> bool
10751094
{
10761095
constexpr auto local_my_width2 = local_uintwide_t_small_unsigned_type::my_width2;
@@ -1207,6 +1226,8 @@ auto test_small_prime_and_non_prime() -> bool
12071226
return result_is_ok;
12081227
}
12091228

1229+
auto test_some_gcd_and_equal_left_right() -> bool;
1230+
12101231
auto test_some_gcd_and_equal_left_right() -> bool
12111232
{
12121233
auto result_is_ok = true;
@@ -1807,6 +1828,8 @@ auto test_various_isolated_edge_cases() -> bool // NOLINT(readability-function-c
18071828
return result_is_ok;
18081829
}
18091830

1831+
auto test_to_and_from_chars_and_to_string() -> bool;
1832+
18101833
auto test_to_and_from_chars_and_to_string() -> bool // NOLINT(readability-function-cognitive-complexity)
18111834
{
18121835
eng_sgn().seed(util::util_pseudorandom_time_point_seed::value<typename eng_sgn_type::result_type>());
@@ -2124,6 +2147,8 @@ auto test_to_and_from_chars_and_to_string() -> bool // NOLINT(readability-functi
21242147
return result_is_ok;
21252148
}
21262149

2150+
auto test_import_bits() -> bool;
2151+
21272152
auto test_import_bits() -> bool // NOLINT(readability-function-cognitive-complexity)
21282153
{
21292154
eng_sgn().seed(util::util_pseudorandom_time_point_seed::value<typename eng_sgn_type::result_type>());
@@ -2443,6 +2468,8 @@ auto test_import_bits() -> bool // NOLINT(readability-function-cognitive-complex
24432468
return result_is_ok;
24442469
}
24452470

2471+
auto test_export_bits() -> bool;
2472+
24462473
auto test_export_bits() -> bool // NOLINT(readability-function-cognitive-complexity)
24472474
{
24482475
eng_sgn().seed(util::util_pseudorandom_time_point_seed::value<typename eng_sgn_type::result_type>());
@@ -2633,6 +2660,8 @@ auto test_export_bits() -> bool // NOLINT(readability-function-cognitive-complex
26332660
return result_is_ok;
26342661
}
26352662

2663+
auto test_edge_uintwide_t_backend() -> bool;
2664+
26362665
auto test_edge_uintwide_t_backend() -> bool
26372666
{
26382667
using local_small_uintwide_t_backend_type = boost::multiprecision::uintwide_t_backend<local_edge_cases::local_digits2_small>;
@@ -2672,6 +2701,8 @@ auto test_edge_uintwide_t_backend() -> bool
26722701

26732702
namespace from_pr_454
26742703
{
2704+
auto test_proj_specific_containers() -> bool;
2705+
26752706
auto test_proj_specific_containers() -> bool
26762707
{
26772708
bool result_is_ok { true };

test/test_uintwide_t_float_convert.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@
7878

7979
namespace local_float_convert
8080
{
81+
auto engine_man() -> std::mt19937&;
82+
auto engine_sgn() -> std::ranlux24_base&;
83+
auto engine_e10() -> std::linear_congruential_engine<std::uint32_t, 48271, 0, 2147483647>&;
84+
8185
auto engine_man() -> std::mt19937& { static std::mt19937 my_engine_man; return my_engine_man; } // NOLINT(cert-msc32-c,cert-msc51-cpp)
8286
auto engine_sgn() -> std::ranlux24_base& { static std::ranlux24_base my_engine_sgn; return my_engine_sgn; } // NOLINT(cert-msc32-c,cert-msc51-cpp)
8387
auto engine_e10() -> std::linear_congruential_engine<std::uint32_t, 48271, 0, 2147483647>& { static std::linear_congruential_engine<std::uint32_t, 48271, 0, 2147483647> my_engine_e10; return my_engine_e10; } // NOLINT(cert-msc32-c,cert-msc51-cpp,cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers)

test/test_uintwide_t_int_convert.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@
6464

6565
namespace local_int_convert
6666
{
67+
auto engine_val() -> std::mt19937&;
68+
auto engine_sgn() -> std::ranlux24_base&;
69+
auto engine_len() -> std::linear_congruential_engine<std::uint32_t, 48271, 0, 2147483647>&;
70+
6771
auto engine_val() -> std::mt19937& { static std::mt19937 my_engine_val; return my_engine_val; } // NOLINT(cert-msc32-c,cert-msc51-cpp)
6872
auto engine_sgn() -> std::ranlux24_base& { static std::ranlux24_base my_engine_sgn; return my_engine_sgn; } // NOLINT(cert-msc32-c,cert-msc51-cpp)
6973
auto engine_len() -> std::linear_congruential_engine<std::uint32_t, 48271, 0, 2147483647>& { static std::linear_congruential_engine<std::uint32_t, 48271, 0, 2147483647> my_engine_len; return my_engine_len; } // NOLINT(cert-msc32-c,cert-msc51-cpp,cppcoreguidelines-avoid-magic-numbers,readability-magic-numbers)

0 commit comments

Comments
 (0)