2012-03-01から1ヶ月間の記事一覧

Windows 7にBemerを入れた時の作業メモ

備忘録。 texのインストール あべのり氏のインストーラを使用してインストール。とりあえず全部デフォルトの設定で。 ・・・としたら、beamerがはいっとった!!!*1以下の話はいらないけど、調べたんで残しておく。”警告消す”技は有効。 Beamerのインストー…

Expression Template(式テンプレート)を使って、遅延評価を実現する

C++

式構造自体を保存し、必要な際に評価するための枠組み。「Expression Template」でググると色々例が出てくるが、大体行列・ベクトルを扱ったものばかりなので、がんばって”スカラー”評価をする用のクラスを書いてみた。正しくなさげ・最適化の余地ありだと思…

型変換演算子を使って、戻り値の型によるオーバーロードを実現する

C++

型変換演算子を使うとC++の言語使用でサポートされていない「戻り値の型によるオーバーロード」を実現することができる。以下のコードではstruct X内にA・Bの両型での型変換演算子を用意しているのがミソ。 #include<iostream> using namespace std; //戻り値の型 stru</iostream>…

型変換演算子を使って、特定の型へのキャストを行う

C++

型変換演算子(Type conversion operator)をオーバーロードして特定の型へのキャストを実現できる。以下では適当に作ったPointer(ポインタ)型クラスのオブジェクトをNULLポインタのときにfalseが返るようにbool型へキャストしている。 #include<iostream> using name</iostream>…

R.NETとExcel-DNAでRで動くExcelアドインを作る

F# R C#

手元にあるVisual StudioがExpress版だと中々作るのが難しいExcelアドインですが、CodePlex Archiveというものを使うと驚くほど簡単にExcelアドインを.NET言語を使って作成できます。またさらに、.NET言語からR言語を呼び出すことを可能にするDLLを、我らが…

Microsoft Visual C# 2010 Express版で「 DLL プロジェクトからデバッグする」

C#

C#で作ったDLL(最終的にExcelから使用したい)をExcelから使用した状態でデバッグしたくて色々調べてたら、 「方法 : DLL プロジェクトからデバッグする」によると Express Edition では、外部の呼び出し元アプリケーションを指定できません。 Express Edit…

CRTP(Curiously recurring template pattern)を使って静的に多態性を実現する

C++

templateを使って静的に(コンパイル時に)仮想関数の仕組みを提供させようというもの。これを使うと仮想関数を呼びだすオーバーヘッドがなくなるので良いらしい。基本クラス(Base)をTemplateクラスとして宣言しておいて、派生クラスで自身を指定するのがミ…

線形・定数で値の補間を行う

R

欠損データを扱う場合や疎らにしか取得できないデータを扱う場合に、補間をしなければならない。そんな時には approx approxfun の関数を使う。名前から判断できるようにapproxfunの方は補間用の関数を返してくれて、これはとても使い勝手が良い。この関数だ…

関数の積分値を数値積分で算出する方法

R

関数の積分値を計算したい場合はその名もずばりの「integrate」関数というものがあるので、これを使う。例えばf(x) = xを0〜2の区間で積分したい場合は integrate(function(x){x}, lower = 0, upper = 2) とする。出力はlistで返却されるので、その中で必要…

Type Erasure(型消去)を使って何でも格納できる型を作成する

C++

要するにVBAでいうVariant型的な物をC++でどう作るのかというお話。この問題に対する設計の定石としては以下のようなクラスを設計することで対応する。 今回は”代入できる”という機能だけ作成。ここにtemplateで指定した型が持つべき関数を規定・制限したり…