[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003307] Re: ruby-lapack の ruby 1.9.1 対応.



佐々木様

2011/3/24 Youhei SASAKI <uwabami@xxxxxxxxxxxxxx>:
> 西澤様: 佐々木です.
>
> At Thu, 24 Mar 2011 20:12:20 +0900,
> Seiya Nishizawa <seiya@xxxxxxxxxxxxxx> wrote:
>> CLAPACK 同梱の F2C を見てみると、
>> typedef long int integer;
>> となっていて、8バイトですが、
>>
>> debian パッケージの libf2c-dev に入っている f2c.h をみると
>> typedef int integer;
>> となっていて 4バイトです。
>
> ご指摘の点ですが,
>
> #if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
> typedef int integer;
> typedef unsigned int uinteger;
> #else
> typedef long int integer;
> typedef unsigned long int uinteger;
> #endif
>
> なので揃ってませんでしょうか?
#if defined(__x86_64__)
typedef int integer;
#endif
なので 4バイトですよね?
これが正しいです。

CLAPACK に同梱の f2c.h は integer が 8バイトになっています。
よくよく README を読むと、環境によって long を消すように記述があります。
なので、今の ruby-lapack のソースは間違った f2c.h をもとに作っているので、
正しい環境では正しく動かないことになります。
まちがった f2c.h を使った環境ではちゃんと動きます。

ちなみに、32ビット環境であれば問題ありません。


> そもそもコレが問題なら ruby1.8 の場合でも変になってしまう気がするのですが.
> # 勘違い?
たまたまでしょう。
壊した先にたまたま 0 が入っていた。
出力をみても期待した動作になっていません。


いずれにせよ ruby-lapack は作り直さなければならないのですが、
前回ソースを作ったときのlapack のバージョンが分からず、
3.3.0, 3.2 で試してもうまくソースが作れないので、
ちょっと時間がかかりそうです。



西澤誠也

-- 
Seiya Nishizawa
Center for Planetary Science, Kobe University
TEL : 078-803-6472
FAX : 078-803-5731