Skip to content

Instantly share code, notes, and snippets.

@dc1394
dc1394 / mc.cpp
Last active December 29, 2023 07:44
Twitterのモンテカルロ法の速度比較のコード(C++版)
#include <cstdint> // for std::int32_t
#include <iomanip> // for std::setprecision
#include <iostream> // for std::cout, std::endl
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <utility> // for std::make_pair, std::pair
#define USE_MOD 0
namespace {
std::pair<std::int32_t, double> LCGs(std::int32_t seed);
@dc1394
dc1394 / mc.cpp
Created December 31, 2023 12:59
Twitterのモンテカルロ法のC++版の速度比較コード(線形合同法自前実装)
#include <cstdint> // for std::int32_t
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#define USE_MOD 1
namespace {
inline std::pair<std::int32_t, double> LCGs(std::int32_t seed);
@dc1394
dc1394 / mc_crand.cpp
Created December 31, 2023 13:09
Twitterのモンテカルロ法のC++版の速度比較コード(C++に備え付けのrand())
#include <cstdlib> // for std::rand, std::srand
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
namespace {
inline double mcpi();
}
int main()
@dc1394
dc1394 / mc_mt19937.cpp
Created December 31, 2023 13:13
Twitterのモンテカルロ法のC++版の速度比較コード(C++のmt19937)
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <random> // for std::mt19937, std::uniform_real_distribution
namespace {
inline double mcpi();
}
int main()
@dc1394
dc1394 / mc_xorshift.cpp
Created December 31, 2023 13:17
Twitterのモンテカルロ法のC++版の速度比較コード(Xoshiro256PlusSIMD使用)
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#define __AVX2_AVAILABLE__
#include "SIMDInstructionSet.h"
#include "Xoshiro256Plus.h"
namespace {
inline double mcpi();
@dc1394
dc1394 / mc_xorshift_vec.cpp
Created December 31, 2023 13:25
Twitterのモンテカルロ法のC++版の速度比較コード(Xoshiro256PlusSIMD使用+手動でSIMD (AVX2)ベクトル化)
#include <cstdint> // for std::uint32_t
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#define __AVX2_AVAILABLE__
#include "SIMDInstructionSet.h"
#include "Xoshiro256Plus.h"
namespace {
inline double mcpi();
@dc1394
dc1394 / mc_dsfmt.cpp
Created December 31, 2023 13:32
Twitterのモンテカルロ法のC++版の速度比較コード(dSFMT-AVX512使用)
#include <array> // for std::array
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#define HAVE_SSE2
#define HAVE_AVX2
#include "dSFMT.h"
#include "dSFMT-2203-avx512.h"
namespace {
@dc1394
dc1394 / mc_dsfmt_vec.cpp
Last active January 4, 2024 09:19
Twitterのモンテカルロ法のC++版の速度比較コード(dSFMT-AVX512使用+手動でSIMD (AVX-512)ベクトル化)
#include <array> // for std::array
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#define HAVE_SSE2
#define HAVE_AVX2
#include "dSFMT.h"
#include "dSFMT-2203-avx512.h"
namespace {
@dc1394
dc1394 / vmc_crand.cpp
Last active January 4, 2024 09:09
変分モンテカルロ法のプログラム(C備え付けのrand()を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <array> // for std::array
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt, std::sin
#include <cstdint> // for std::int32_t
#include <cstdlib> // for std::rand, std::srand
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector
@dc1394
dc1394 / vmc_mt19937.cpp
Last active January 4, 2024 09:15
変分モンテカルロ法のプログラム(std::mt19937を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <algorithm> // for std::fill
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <random> // for std::mt19937, std::uniform_real_distribution
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector