Rokiのチラ裏

学生による学習のログ

ブログを移転する

ブログを移転することとした. 記事の移行は考えていないため, こちらのブログはそのまま残しておくことにする. 移転先: roki.log

markdown から数式のみを取り出して PNG として出力し該当箇所をパスで置換

なんだか簡単な使い捨てスクリプト程度にしようと思っていたものの, 微妙にしっかり作ってしまったのでその記録. この記事の執筆時現在, このログのように, gitbook でのビルドが失敗することがある. 発生する条件としては, 文中に大量の数式があり, それを …

Proof of infinite geometric series

16.8 float のしくみ · ThePolitewaylearntoCPP17 の補足記事。命題「 は のとき収束し、その値は である。 のとき発散する」は、高校数学の範囲なので、特別に取り上げる必要はないと思ったが、コンテンツ内容をなるべく自分で書いた文章のみ完結できるよう…

Divergence of the sum of the reciprocals of the primes

素数の逆数和が発散する事(式 )についてメモ。 素数の逆数和が発散することの証明には Harmonic series*1 が発散する事(式(2))を利用する 式 (2) の証明には、式変形、等式変形による不等式の評価を行う方法と、積分を用いた不等式評価など*2による方法があ…

zlib ラッパー

C++

少し以前に実装したものの話題となるが、zlib のラッパーを自作ライブラリの方に実装したものの、ブログに特に書いていなかったのでそのメモ。次のように利用できる。 テストは次のように、フリードキュメントである赤毛のアンのテキストを圧縮/解凍をし、そ…

TMP におけるバインドとその利用

C++

私の観測範囲内ではあまり有名で無いようなので発信。バインドとは C++ において Callable を満たすものに対し引数の束縛を行い、束縛済みの新たな Callable オブジェクトを生成する事を広義に言うが、これを TMP で行うにはどうすれば良いか。つまり例えば…

maximal length sequence

M系列に関する学習メモ*1。 import Test.HUnit import System.IO mulcon :: Int -> Int mulcon 0 = 1 mulcon n = (a * mulcon(n - 1) + b) `mod` m where a = 3 b = 0 m = 7 mc :: [Int] -> [Int] mc = map mulcon main :: IO (Counts, Int) main = runTestT…

sha-2 の理論と実装

ふと国内でもある程度取り上げられている記事 Learn Blockchains by Building One – Hacker Noon を見て自分も何か実装してみるか〜と思ったのだが、私の観測範囲内では C++ の sha-2 ハッシュ関数がライブラリとしてあまりよく整備されていない気がしたので…

Searching and Manipulation of Parameter Packs

C++

2014 年頃に提案されていたペーパー、N4144, Searching and Manipulation of Parameter Packs をふと見かけて少し思うところがあったのでそれについてのチラ裏記事(特別新しい技術、発想ではないと思うのだが、何だかんだ同じような事をしている有名どころを…

haskell $ 演算子の挙動

プログラミング言語 Haskell における演算子$に関するメモ。 次の関数 は指定範囲の数列のうちの偶数の二乗の総和を求める関数である。 f x y = sum $ map (^2) $ filter even [x..y] g x y | x < y = f x y | x > y = f y x main = print $ g 1 10 これは次…

Polymorphic Memory Resources

C++

先日策定された C++17 から追加された Polymorphic Memory Rerouces についてのメモ。同提案でも言及されている通りstd::allocatorは、型にそのアロケータ情報を含む事で利用されるため、コンパイル時にしか指定することが出来ず、結果として同じ型のオブジ…

implicitly capture の振る舞い

C++

以下の例が成り立つ。 const int i = 123; // #1 const float f = 123.f; // #2 []{ i; }(); // OK []{ f; }(); // ill-formed C++17 のラムダ式における reaching scope に関する記述 n4659/[expr.prim] 3, 7, n4659/[expr.prim.lambda.capture] 8 から引用…

Java Evaluate Operands before Operation

Java の order of eval についてメモ。 x = 1; x = ++x + x++; // 3 が保証される JLS 15.7.2. Evaluate Operands before Operation から引用。 The Java programming language guarantees that every operand of an operator (except the conditional opera…

Consistent/three-way comparison

C++

先日、米国のニューメキシコ州アルバカーキで開催された ISO C++ 委員会による国際会議にて C++20 に追加された Consistent comparison (p0515) についてのメモ。当エントリー内容は同提案書である p0515r2 に基づく*1。また、同提案の採択と共に導入される …

Synchronized Buffered Ostream

C++

先日、米国のニューメキシコ州アルバカーキで開催された ISO C++ 委員会による国際会議にて C++20 のドラフトに追加された Synchronized Buffered Ostream (p0053) についてのメモ。当エントリー内容は同提案書である p0053 に基づく。 C++ の一部のストリー…

Range-based for statements with initializer

C++

先日、米国のニューメキシコ州アルバカーキで開催された ISO C++ 委員会による国際会議にて C++20 のドラフトに追加された Range-based for statements with initializer (p0614) についてのメモ。当エントリー内容は同提案書である p0614 に基づく。C++17 …

Conditionals with Omitted Operands

GCC の Conditionals with Omitted Operands という拡張構文についてのメモ。x ? x : yというような Conditional operator を利用した記述を次のように記述する事ができる。 x ? : y 値は x が 0 でない限り x 、そうでない場合 y である。このような単純な…

たんぶらーくらいあんと

github.com 二ヶ月半ほど前に一度 Electron を触っておこうと思い作り始め、二ヶ月前にもう作るのに飽きてしまったたんぶらーくらいあんとについてブログに特別載せていなかったので一応リンクを載せておく事にした。一応上記リポジトリから動いている様子も…

ビルトインを使わずに任意の型のアラインメントを計算

C++

alignment_of は C++11 で標準化されており、殆どの場合はビルトイン関数を呼び出す実装となっているが、ふと Boost の実装を見るとなるほど〜という感じだったのでメモ。Boost による実装は今からかな〜り前からあるので、今更感はあるが。 // 以下の実装は…

lua de gmail

単なるメール送信のためにメールクライアントを起動したりブラウザを起動したり、sendmail コマンドを設定するのは面倒だったので lua でそのような用途の簡易的なスクリプトを書いたのだが、lua を書く事自体本当に久しぶりだった。Gist に上げるまでもない…

P0532R0: On launder() 和訳

C++

std::launder については以前触れたが P0532R0: On launder() にとても分かりやすくまとめられていたので、個人的理解のためも含めて和訳してみる。 C++17では、C++14 の NB コメントの結果としてstd::launderを導入している:C++ FCD Comment Status それは…

内蔵ストレージが破損した Mac で USB メモリに Ubuntu 16.04 LTS を インスコしてブート

久しぶりに日記的な内容。 序章 ついにその日が来てしまった。いつもと変わらず Mac の電源ボタンを押すと、フォルダのアイコンに ? のマーク。一旦再起動してオプションキーを押しながら起動するも、起動ディスクが一切一覧に現れない。Apple diagnostics …

C++17 structured bindings で [ ] が使われる事情

C++

C++17 から導入される structured bindings は、複数の変数をタプルのようなオブジェクトから初期化する事ができる言語機能であるが、同機能における宣言では { } ではなく [ ] が使われる。 そもそも structured bindings の元々の提案では宣言の構文におい…

Usage of void() in a comma-separated list

C++

,で連結されたリストにおけるvoid()がどのような意味を持つのか。 a(), void(), b(); これは単純にオーバーロードされたoperator ,の呼び出しを防ぎ、言語による sequencing guarantees を保証するためのものである。void型のパラメータを持ったオーバーロー…

aggregate, aggregate initialization まとめ

C++

C++ における aggregate と aggregate initialization についてのメモ。まずバージョンごとの aggregate の定義から。 aggregate C++03 aggregate とは*1 配列または 以下の要件を満たすクラスである ユーザー定義コンストラクタがない private または prote…

n4687 C++ extensions for Concepts

C++

このエントリは、ドラフト入りしたコンセプト仕様全体を網羅するためのものである。尚、このエントリは P0734R0 と同提案が drafting された n4687 に基づいており、注釈などで付けられるセクション名は特に指定のない限り n4687 を示しているものとする。 …

Can non-type template parameters in c++17 be decltype(auto)?

stackoverflow.com template <decltype(auto)> // Is this legal by standard? struct X {}; 結論: 合法である。 n4659 17.1 Template parameters [temp.param]/paragraph 4 に non-type template parameters が持てる型について示されている(下線部は強調)。 A non-type te</decltype(auto)>…

non-type template parameter におけるデータの受け渡しから TMP で実数を含む value computing を行う

C++

push してからしばらく経っているが記録もかねて。C++ の non-type template parameter には浮動小数点型などの数値を直接与えることはできない。しかし、型の内部に内包させて Expression templates のようにその値を取り出そうとした瞬間に型情報に紐付い…

stack overflow からの小ネタメモ #3

C++

前回。 stackoverflow.com C++98(03) ではstd::vectorの fill コンストラクタのプロトタイプに初期化子のデフォルト値があるが C++11 では削除されている。 C++03 – ISO 14882:2003 23.2.4.1 vector constructors, copy, and assignment [lib.vector.cons] …

C++ Standard Library Active Issues List Issue Status 和訳

C++ Standard Library Active Issues List の Issue Status の和訳。和訳されているのを見たことがなかったので、まとめておく。様々なステータスを通じてLWG移行に報告された問題で、解決への進捗状況を示す。通常、ほとんどの問題は次の段階を流れる。 New…