プログラミング

C言語で2次元配列に対するループで制御文から添字を省く試み

教育用の覚書。2次元配列、例えば画像データの画素に関するループで、添字に関するfor文を書くときに添字の範囲をタイポしそうなので、添字のインクリメントと範囲チェックを関数化してwhileの中に入れるとタイポのエラーが回避しやすいかもと思った。書いて…

C言語でポインタのポインタのポインタを使わずに「3次元配列」を動的に確保し、関数に渡して操作する(ただしC99)

教育用の覚書。C99の仕様である関数での可変長配列(variable length array, VLA)の利用法の勉強をした。*1 「古い」C言語では多次元配列を動的に確保し、関数に渡して処理するときに、N次元配列の代わりに(ポインタの)N-1ポインタ*2を使ってdouble** func ( …

Excelで枠線で囲まれたセルの範囲を取得する VBA Function

Excelで上図のように矩形の枠線で囲まれたセルの範囲(Rangeオブジェクト)を取得するVBAのFunctionを作成したのでメモ。Excelでセルの結合はなされていないが、枠線で囲まれているので「一つの項目」として扱われている対象を取り出すために作成してみた。上…

Excelで1枚のグラフに複数のデータの散布図を描くVBAマクロ

上図のA列をY軸方向、B, C, D, E列をX軸方向のデータとして1枚のグラフに4本の散布図をプロットする最小限のコード。軸の設定とかは書いていない。複数データの散布図を同時に1枚のグラフの上に描く方法の解説が意外にウェブ上に無かったのでメモ。手許の環…

処理分岐フラグ付きの連想配列を用いた任意次元の任意長配列

自分のためのアイディアのメモ。多分、世界でn番目の車輪の再発明 まず1次元 要素データに重複のない配列データを格納するために、連想配列を実装したプログラミング言語で、連想配列の[キーデータ]=>[値データ]に[添字]⇒[要素データ]ではなく、わざと[要素…

配列の添え字の角括弧 [ ] を関数の戻り値につける

教育用の覚書 C言語の角括弧 [ ] は「配列添え字演算子(array subscript operator)」と言い、(アドレスをくれる何か)[i] を (*((アドレスをくれる何か)+(i))) と同じものとして扱うというルールなので、例えば int * 型の戻り値の関数の呼出しにくっつけて f…

連結リストの fortran 95 プログラム

自分用の覚書。連結リスト (linked list) はデータの要素の個数を自由に変えられる便利なデータ構造なのだが、「連結リスト」でググっても fortran は出てこないので*1、fortran の POINTER の練習も兼ねて書いてみた。fortran の POINTER という[対象]は、C…

64bit の Windows 7 上でフリーの fortran コンパイラを導入して、簡単なプログラムを作成する

[2016.1.1] gfortran (というか gcc そのもの) 4.7(くらい?) ~ 5.1 にはWRITE文でセグメンテーション違反のバグがあるようなので、5.2以降をお手軽にインストールするための記事を書きました: 64bit の Windows10 上でフリーの fortran コンパイラを導入し…

PHPの引数の渡し方についてのメモ

PHPは連想配列が使えるので、関数の定義を function func ($p) { if ( isset($p["parameterA"]) ) $varA= $p["parameterA"]; if ( isset($p["parameterB"]) ) $varB= $p["parameterB"]; ... }と書き、関数の呼出を $returnValue= func(array( "parameterA" =…

fortran コーディングスタイル(自分用)

ここ数週間のコーディングで考えたこと。第4回 オブジェクト指向の本質:Software is Beautiful|gihyo.jp … 技術評論社を読みながら、fortran に何ができるかをかんがえてみた。 大文字・小文字 fortranの予約語、組み込み関数等は大文字で綴る。 自作の定…

fortran 90 の MODULE 内の変数の扱いがコンパイラによって異なっていた件について

日頃、利用している2種の fortran コンパイラ(g95と日立)で動作が異なっていたのでメモ。ミニマルのサンプルソースコードは下記。g95では sub() の動作の冒頭では b の値が不定(演算時にゼロを代入している)だが、日立では初期にゼロ, 2回目の呼出では前回の…

fortran 90 で多次元配列を初期化する方法

自分用の覚書。fortran90 での多次元配列の初期化の仕方は、配列構成子で与えられた1次元配列の初期値データを RESHAPE 関数に代入し、SHAPE パラメータで形状を指定する。サンプルソース(固定形式,1行末の'!&'を'&'に変えると自由形式でも使える) INTEGER,P…

fortran 95 で ALLOCATABLE な配列を SUBROUTINE や FUNCTION に渡してメモリアロケートする方法

SUBROUTINE, FUNCTION を MODULE の中で定義するとサブルーチンや関数で動的な割付けが出来る。サンプルコード MODULE allocArray CONTAINS FUNCTION fncAllocReal8 (in,sizeofIn) RESULT (out) REAL(8),TARGET,ALLOCATABLE,DIMENSION(:):: in INTEGER,INTEN…

いままで動作していたmb_ereg()によるマルチバイト文字(漢字等)のマッチが動作しなくなった

…と思ったら、「正規表現用のエンコーディング」のデフォルト値が違っていたみたい。mb_regex_encoding()で指定したら、動作した。現在のコードの構成だと、大雑把にはこんな書き方で対処可能。 <HTML> <HEAD> </HEAD> <BODY></body></html>

携帯プログラミング覚え

クッキーが使えない「ガラパゴス携帯」でのウェブプログラミングの覚え。2008�N12���̂��炫���������̌�������の記述を引っ越ししただけ。ここ2週間(コードの作成の最初の日付が12.11だった)、自分自身の教育、および院生の研究の背景知識として、理科大の教員…

ダイクストラ法をWikipedia(英語)の記述に100%沿ってPHPで書いてみた

教育用の覚書。最短経路問題のアルゴリズムとして有名なダイクストラ法(Dijkstra's Algorithm)をDijkstra's algorithm - Wikipediaの記述に忠実に実装をPHPで書いてみた。PHP独特の配列の取扱いや変数の自動アロケーションを使って、原文の記述の順番をまっ…

MinGW の自動インストーラが新しくなっていた

自分用のメモ。授業でCコンパイラをインストールさせようとして、sourceforge の MinGW のページ*1を見にいったら、インストーラが mingw-get-inst-20100909.exe というものに変わっていた*2。gcc の 4.5.0 を勝手にインストールしてくれた。 *1: MinGW - Mi…

Windows + g95 で LAPACK を使う

自分用の覚え(本家の日記のメモをここにも書いておく)。手許の環境は WinXP SP3 + MinGW gcc + g95 (\MinGW\bin にインストールされてる) + LAPACK 3.2.1 (以上、全部32bit版)である。 コンパイル済みのバイナリ mingw32-lapack-3.2.1-1.zip をとってくる ま…

fortran 90 で w=curl(u) と書いてみたかった

速度場 u=(u_x(x,y,z),u_y(x,y,z),u_z(x,y,z)) の curl 演算 ω=∇×u の計算を fortran で w= curl(u)と書いてみたかったので試したコード。手許の WinXP + MinGW g95 (デフォルト値コンパイル) で動作した。手許のノートPCで試した配列サイズは倍精度, 1283×3…

FORTRAN 90 で C 言語の switch に相当するもの

フォートランの条件分岐に CASE 構文というものがある。C では switch ( ) { } だが f90 は SELECT CASE ( ) ... END SELECT でどっちも S ではじまるので、ボクにとっては紛らわしい。詳しくはこのページを参照:http://www.xlsoft.com/jp/products/intel/c…

MinGW gcc と g95 を使って c から fortran のサブルーチンを呼び出す

やってみたらできたのでメモをしておく。c のソースコード main.c は int main (void) { int i=3; hello_(&i); }これから呼び出している hello_() の fortran ソースコード hello.f は SUBROUTINE HELLO (i) PRINT * ,'HELLO' ,i ENDでコンパイルのコマンド…

MSYSのインストール

自分用のメモ。MSYS の Wiki http://www.mingw.org/wiki/MSYS によれば、バージョン 1.0.11 以前にはインストーラがあるが、それ以降には無いとのこと。ダウンロードサイトのファイル一覧 http://sourceforge.net/projects/mingw/files/ の中の "MSYS Base S…

MinGW 環境で Windows のダイナミックリンクライブラリ *.DLL からインポートライブラリ *.a ファイルを作成する

FFTW を利用するための自分用のメモ*1…なのだが、すこし一般的な話題。MinGW gcc で Windows の DLL を利用しようとする場合には、*.DLL から *.a ファイルを作成し、これを C:\MinGW\lib ディレクトリに入れておく必要がある。作成の方法は MinGW に含まれ…

文字コードの解析

PHP 5.2.12 の文字エンコーディング関連の修正点 - t_komuraの日記 文字エンコーディング判定スクリプト - t_komuraの日記 mb_detect_encoding() は文字コードの妥当性検証として使用できるか(その3) - t_komuraの日記 mb_check_encoding() の代替関数 - t_k…

HTMLをパースする

PHP の DOMDocument クラスの loadHTML() を利用する方法 http://www.programming-magic.com/20080331235210/ PHP: Tidy - Manual http://php.net/manual/ja/book.tidy.php PHP Simple HTML DOM Parser download | SourceForge.net http://sourceforge.net/p…

fortran 基礎文法最速マスター

基礎文法最速シリーズに便乗して*1書きかけですが上げます。fortranは書き方がフリーダム過ぎてまとめきれません。「基礎文法」なので「fortranで線形代数の計算の雛形が書ける」くらいの内容を目標にして書いてみました。説明した事項は「自力で書ける」「…

5大装置って何だ?

初級シスアド*1のテキストなんかを見ると「5大装置」*2という表現と模式図が出てくる。ところがこれに対応する英語のWeb資料がなかなか見つからない(検索のキーワードが分からないというべきか)*3。フォン・ノイマン型の模式図*4とも構成が違っている。多…

覚書

for文のテキストを書こうとして書いてみたソースコード // 1+2+... と足し算して和が 100 を越えた時点で止めるプログラム #include <stdio.h> int main (void) { int i, sum; for ( i=1, sum=0; sum<100; printf("%d %d\n", i++, sum=sum+i) ); }このソースに似たも</stdio.h>…

Cの用語の訳語

http://www.yfcbookshelf.com/c%20language's%20books12mokuji.htm [文法リファレンス]法大奥山研究室 C言語 http://okuyama.mt.tama.hosei.ac.jp/unix/C/index.html

CUDA FFT

ちょっとぐぐっただけでも結構な資料が見つかるものだ http://scholar.google.co.jp/scholar?q=cuda+fft+high+performance http://download.microsoft.com/download/2/d/6/2d6d8a71-2715-4c4d-bde1-d21ee9ca95b6/Discrete%20Fourier%20Transforms%20on%20GPU…