行列計算ライブラリのBlitzのコードがカッコいい件

iOSで行列計算したいなーという事で、ちょろちょろ調べているとBlitzっていうC++のライブラリが見つかったんですけど、すごくカッコよくてビックリしました。

このライブラリ使うと以下のようなノリで行列計算が出来ます。AとBを初期化してる部分がエレガント過ぎますね。

#include <iostream>
#include <blitz/array.h>

using namespace std;
using namespace blitz;

int main(int argc, char** argv) {

    Array<float, 2> A(3,3), B(3,3), C(3,3), D(3, 3);

    A = 1, 0, 0,
        2, 2, 2,
        1, 0, 0;
    
    B = 0, 0, 7,
        0, 8, 0,
        9, 9, 9;

    C = A + B;
    D = A * B;

    cout << "A = " << A << endl
         << "B = " << B << endl
         << "C = " << C << endl
         << "D = " << D << endl;

    return 0;
}

Continue reading “行列計算ライブラリのBlitzのコードがカッコいい件”

TOC13の1Cの2問目 (TheOlympiadInInformatics)

前回は数年ぶりのTopCoderで、コンテスト中にエディタの設定に手間取ったりしたので、今回こそはと思って参加しました。2問解けてまぁ行けたかなと思ってたら、2問目がシステムテストで落ちてて、またダメでした。生きるのが辛いです。

今回間違えた問題がこれです。

問題は人数不明のテスト受験者達が、人数がバラバラのグループに分けられていて、グループ毎の合計点数のみ与えられたときに、自分がK番以内の成績を取るには何点必要かというもの。

Continue reading “TOC13の1Cの2問目 (TheOlympiadInInformatics)”

OSXのdylibを作ってみる

OSXで共有ライブラリを触ったことがなかったので、試しにdylibを作ってみました。Linuxだと.soですがOSXだと.dylibのようですね。フォーマットの差異については調べていません。Appleの「Dynamic Library Programming」というドキュメントのさわりだけ参考にしました。

Continue reading “OSXのdylibを作ってみる”

いつの間にかgccが標準ライブラリは自動でリンクするようになってた

さっきcmakeの使い方を覚えている最中に、cmakeでサーチパスとかリンクするライブラリの追加をどうするかを調べる為に、サーチパスとライブラリの追加設定が必要な小さなコード書こうということでsqrtとか書いたんですけど、今やmathとかの標準ライブラリは自動でリンクされるっていうので、なんか無いかなんか無いかってことで、そうだlibxmlがあったと思ったけど使い方覚えてなくて、cmakeの為のサンプルを書くのに1hもかかったので、これからC++で上記の条件にあてはまるコードを要求された時に、にやりとしながらこのコードを出そうという事でエントリ。

Continue reading “いつの間にかgccが標準ライブラリは自動でリンクするようになってた”