2019-05-01から1ヶ月間の記事一覧

二重かっこの高さを中身に合わせるtexマクロを解読する

のような二重角かっこは、\[\!\[3\]\!\]と入力すれば出すことができます。 nath.styを導入すると、\double[とか\lBrackなどと書けるようです。 しかし、このままでは中身に高さのあるもの(分数など)を入れた場合に見栄えが良くありません。 中身に応じた高…

128bit除算のやり方

五月祭お疲れさまでした。私はクイックソートのメモリアクセス系列の可視化の展示をしていましたが、楽しんでいただけたでしょうか……。 C言語には多倍長整数のような便利なものがありません。unsigned long longを使えば64bit整数までは取り扱えますが、それ…

C言語における移植性のある算術シフトの記述方法

多くのCPUには、算術シフト演算命令が含まれています。そのため、多くのコンパイラは、符号付き整数に対する右シフトを算術シフトにコンパイルします。 しかし、C言語において、符号付き整数を右シフトした場合の挙動は処理系定義です。処理系定義というのは…

テンプレートクラスを継承したクラステンプレートを作るときの罠

何回も言われていることだけれど、つまづくことが多いところなのでメモしておきます。 以下のようなコードで、コンパイルエラーになるときの対処法です。 template<class U> class Base { public: int f() { return 1; } }; template<class T> class Derived : Base<T> { int g() </t></class></class>…