物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

2016-09-01から1ヶ月間の記事一覧

3Dの位置と角度を持った情報の2次元プロジェクションマップ

CERNが開発しているROOT (バージョン5)を用いた検出器内の飛跡を2次元プロジェクションに投影して描画する方法。 具体的には三次元情報を持つ飛跡を2次元に投影したい時に使う。 #include <vector> #include <random> #include <limits> #include <TArrow.h> #include <TGraph.h> #include <TAxis.h> #include <TCanvas.h> #in</tcanvas.h></taxis.h></tgraph.h></tarrow.h></limits></random></vector>…

2個の数列(std::vector<int>とか)から重複とかを探す

2個の数列から重複等を探す方法を紹介する。Linuxのjoinコマンドを高速化する場合などに使える。 続きは 2個の自作クラスの配列(std::vector<MyClass>)から重複とかを探す - 物理の駅 Physics station by 現役研究者 #include <algorithm>に便利な関数が用意されている。 ソート</algorithm></myclass>…

δtanθ - tanθグラフをδθ - tanθグラフに変換する

より正しい記述へ phst.hateblo.jp tanθを0.1刻みで、δtanθの値が一律で0.1のときにδθを計算するコードの例。 #include <vector> void main() { std::vector<double> x, y; //tanθ δtanθ for (int i = 0; i < 20; i++) { x.emplace_back(i * 0.1 + 0.05); y.emplace_back(0.1</double></vector>…

OpenMPでfor文を高速化する

openmpでfor文を高速化してみよう。OpenMPを有効にするには、Visual Studioのプロジェクトのプロパティページを開いて、C/C++の言語のOpenMPのサポートをはい(/openmp)にする必要がある。 例として1から50000までの数が素数(prime)かどうかを調べてみよう。…

Visual Studio 2013でstd::min std::maxが使えなくなった時の対処

std::max - cppreference.com Visual Studio 2013以降、Visual Studio 2015も完全にalgorithmに移動したらしいので以下の記述が必要。 #include <algorithm> //必要 int main() { int i = std::max(1,2); int j = std::min(3,4); } ちなみにVisual Studio 2012以下は以</algorithm>…

メモリリークしているソースコードの行を特定する

#include <cstdlib> #include <new> #include <memory> #include <crtdbg.h> #define _CRTDBG_MAP_ALLOC #define new ::new(_NORMAL_BLOCK, __FILE__, __LINE__) void main() { int *i = new int; _CrtDumpMemoryLeaks(); return; } これをデバックモードで実行すると Detected memory leaks!</crtdbg.h></memory></new></cstdlib>…

catchしなかった例外が発生した際の ***は動作を停止しました「WerFault」を表示させない・表示させる

問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合はWindowsから通知されます。 を表示させないプログラムは以下のとおり。 #include <exception> #include <Windows.h> void main() { SetErrorMode(SEM_NOGPFAULTERRORBOX); t</windows.h></exception>…

マルチスレッドにおける例外処理の受け渡し (VC++)

別スレッド中の例外を、本スレッドに渡す方法のメモ。動作確認はVisual Studio 2013 C++で行っている。 詳しい説明は スレッド間の例外転送 を参照してね。 #include <thread> #include <iostream> //マルチスレッド用の関数 void f1(std::exception_ptr &eptr) { try { throw </iostream></thread>…

WiMAX 2+は下り速度4.5Mbpsしか出ない

タイトルで何もかも終わったんだが、下り速度を測定してみた。まずは一番重要な速度の一つ、アニメのHD画質が見れるかどうか。 確かにアニメのHD画質は見れるようだ。4.5Mbpsしか使っていないので、そもそも大したことはないんだが。 Re:ゼロから始める異世…