goto fail; をコンパイル時に検出する

日本語の記事が見当たらないので書きます。iOS のSSLのバグは、コンパイル時に検出できます。警告オプション -Wunreachable-code をつけて clang でコンパイルすれば良いだけです。 バグの原因 このバグの原因は、意図しない場所に goto 文が書かれていたた…

続・PFIサマーインターン2011問題

今更ですが、これの続き。 前回は最悪がO(n2)だったので、最悪をO(n)にしました。 #include <assert.h> #include <algorithm> #include <string> char pfi2011(std::string& s) { assert(!s.empty()); typedef std::string::iterator iter_t; iter_t l = s.begin(), r = s.end(); iter_t c</string></algorithm></assert.h>…

C++で円周率を取得する

Boost.Math 円周率を取得する 普通に逆三角関数を使うのがいいんじゃないでしょうか。 #include <cmath> using std::acos; using std::asin; using std::atan; using std::atan2; int main() { double const pi1 = acos(-1.0); double const pi2 = 3*acos(0.5); dou</cmath>…

ステルスマーケティング

日本語入力を支える技術という本が今日発売されるらしいです。

Perlで多倍長計算

以下の手順を踏むと、PerlでGMPを使った多倍長計算ができます。まず Math::BigInt::GMP をインストールします。 cpan Math::BigInt::GMP Perlスクリプトに use bignum lib => 'GMP'; と書くと、自動的にGMPで多倍長計算されます。整数だけ使うなら: use big…

Boostの数学関数

この記事はBoost Advent Calendar 2011の参加記事です。Boostの数学ライブラリの一部を紹介したいと思います。複素関数としての逆三角関数・逆双曲線関数C99の逆三角関数・逆双曲線関数を移植したものです。C++11に追加されたので、そのうち新規には使われな…

C++11の数学関数

この記事はC++11 Advent Calendar 2011の参加記事です。(書きかけ)C++11には、C99の数学関数や浮動小数点数を扱う関数が追加されました。追加された関数のうち便利なものをいくつか紹介したいと思います。C99との相違点今回紹介する関数はC99由来のもので…

HomebrewでMacにGCC 4.6を入れる

最近MacBook Airを買いました。なかなか快適です。ただ、期待していたのと違いデフォルトではGCCが入っていない。Xcodeというものを入れるとGCCも入るらしいことを知って、Xcodeを入れましたが入ったのはGCC 4.2.1。これではとても辛いので、Homebrewを使っ…

GCCでBoostをC++11用にビルドする

BoostにはC++11対応がなされており、ヘッダーオンリーライブラリなら g++ -std=c++0x source.cc とするだけで使うことができます。*1しかし、ビルドが必要なライブラリの場合には落とし穴があります。ライブラリを、bjamを使って通常の手順で生成した場合、-…

C++03とC++11の互換性についての補足

id:melponさんがC++03とC++11の互換性について書かれました。ぜひ読むべきだと思います。当該記事のコメント欄で指摘されてますが、n3291*1のC.1に書かれている部分が抜けているので補足します。C.1にはC言語からの変更について書かれており、C++03では変更…

C++で40バイトのHello Worldを書いた

Hello Worldはプログラミング言語の入門書でおなじみのプログラムで、入力を受け付けず、"Hello, world!"を出力するプログラムです。Hello Worldを、C++で40バイトのものを書きました。 main(){__builtin_puts("Hello, world!");} これだけではよくわからな…

PFIサマーインターン2011問題

PFIという検索エンジンのベンチャー企業でインターンシップの募集があったようです。その選考過程で次のような問題*1が出たそうです。 長さnの文字列中で出現回数が最大の文字をO(n)時間で答えるプログラムを書いてください。但し、出現回数が最大の文字の出…

Expression Template と auto 追補

このエントリは Expression Template と auto の補足です。先日は問題の提示だけして解決法を書きませんでした。本エントリでは解決法と、Expression Templateで実装されたライブラリを使うときの注意と、前回のサンプルコードについて述べます。解決法問題…

Expression Template と auto

これはC++ Advent Calendar jp 2010への参加記事です。C++の次世代規格であるC++0xには、新しくautoという機能が加わります。autoは次のように使います。 auto p = std::make_pair(1, 2.0); 上のコードでは、std::make_pair(1, 2.0)の型が推論され、pの型はs…