2005年4月アーカイブ

Stella Theater Lite Ver2.40

| コメント(0)

フリーソフトウェアのプラネタリウムソフト Stella Theater Lite Ver2.40 が公開されました。軽くてお気に入り。

5 月

素因数分解

| コメント(0)

xx...xxy の形の near-repdigit の素因数分解は 150 桁まで 28 系列 4200 個のうち残り 3 個。

JR 福知山線事故関連

| コメント(0)

犠牲者の数は 106 人でほぼ確定。犠牲者が 100 人を越えた鉄道事故は 40 年振りとのこと。asahi.com の記事に掲載された遺族の声「遺体のむごさを見なければ事故のひどさがわからないのに」が印象的。記者会見に出てくる JR 西日本のトップの人はどれだけの遺体を目の当たりにしたのだろうか。

陸域観測技術衛星 ALOS

| コメント(0)

9 月に H-IIA ロケット 8 号機で打ち上げられる予定の世界最大級の地球観測衛星 ALOS(エイロス)が公開されたそうです。ALOS は 3 種類の高性能なセンサと、センサから得られた膨大なデータを圧縮、蓄積するサーバ(のようなもの)と、データを効率よく伝送するためのアンテナを備えています。センサは、2.5 メートルという高い分解能で標高データを取得する立体視センサ PRISM、可視光と近赤外の合計 4 種類の波長で撮影する AVNIR-2、天候や昼夜に関係なく観測できる合成開口レーダー PALSAR の 3 種類。データレコーダの容量は 96GB。DRC アンテナの伝送容量は 240Mbps となっています。重量がおよそ 4 トンあり、先日打ち上げられたひまわり 6 号も含めて過去に日本のロケットで打ち上げられたどの衛星よりも重いです。軌道はひまわり 6 号のような静止軌道ではなくて高度 692km 周期 99 分の太陽同期準回帰軌道に投入されます。

JR 福知山線事故関連

| コメント(0)

犠牲者の数は今朝までに 91 人。まだ 1 両目に取り残されている人がいるとのことで、さらに増える見込み。

GGNFS-0.76.8

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.8 がリリースされました。

素因数分解メモ

| コメント(0)

SNFS 法で難易度 10150の near-repdigit (7·10150-61)/9を 21.84 時間で分解できた。

JR 福知山線事故関連

| コメント(0)

夜を徹した救出作業で日付が変わってから今朝までに 3 人救出された。しかし犠牲者の増加は止まらず 11 時現在で 73 人。事故直後には重機が接近できなかった現場に複数のクレーン車が入り、より大掛かりな作業が進んでいる模様。

Reruters.com でもトップニュースに。

追記 きのうテレビで「伊丹駅で 2 両目までオーバーランしていた」という複数の証言が放映されていたので変だと思ったのだけれど、やはり 8 メートルというのは嘘で実際は 40 メートルだったらしい。しかも運転手の要求で車掌が運転指令に嘘をついたという。まるで兄弟で相談して親に嘘をついたが結局ばれてしまった子供のようだ。

きょうは午前中から @nifty のウェブメールが断続的に使えない状態が続いています。サポートページには 18 時にすべて復旧したと書いてあるのですが、21 時前にまた「サーバーが停止しています」と表示されました。@nifty では認証が必要なサービスが一斉にダウンするというトラブルが以前にも何度かありましたが、今回は特に復旧に時間が掛かりすぎているように思えます。

JR 福知山線事故関連(更新)

| コメント(0)

NHK 総合テレビほかから。9 時 18 分頃、JR 福知山線尼崎駅 - 塚口駅間で宝塚発同志社前行き上り快速電車(207 系 7 両編成、乗客 580 人、高見隆二郎運転手(経験 11 ヶ月、23 歳))の 1~5 両目が脱線して 1~2 両目が左側のマンションに突っ込み大破。少なくとも 50 人(男性 27 人、女性 23 人)が死亡(鉄道事故としては過去 40 年で最悪)、325 人がけが。軌道中心から 6 メートルの位置にある 9 階建てのマンションの 1 階部分の駐車場に 1 両目が突っ込み、2 両目が巻きつくようにめり込んでおり、12 時間経った 21 時 20 分現在も救出作業が続いている。ワンボックス型の乗用車とも衝突しているが、直前の駅とマンションの間に踏切はなく、脱線後に衝突した模様。また、この電車は手前の停車駅である伊丹駅を 8 メートルオーバーランしてバックし、およそ 1 分 30 秒遅れて発車していたとのこと。直前の塚口駅はおよそ 1 分遅れで通過。現場付近は緩い右カーブ(R300)で制限速度は時速 70km だが、実際にどのくらいの速度でカーブに進入したのかは不明(ATS は旧式で赤信号にのみ反応する)。現場近くのレールに粉砕痕(石などに乗り上げたときにできるもの)があったが事故との関連は不明とのこと。

当初、マンションに巻きつくようにしてめり込んでいるのは 7 両編成の 1 両目だけだと思ったが、後ろから数えてみると原形をとどめている車両が 5 両しかなかった。マンションに巻きついて見えていたのは 2 両目で、1 両目は 2 両目の下にあり、6 時間以上経った 16 時前にやっと 1 両目の救出作業が始まったとのこと。

民放もいくつかザッピングして見た。電車の速度が普段よりも速かったらしいというだけで他に考えられる原因を挙げることもせずに運転手の過失ばかりを責める解説者を連れてきたところは見苦しかった。事故区間で同じ快速電車の運転席から撮影された 4 年前の映像を見つけてきて(当時はまだマンションがなかったが)解説に使っていたところはわかりやすかった。

追記

さらに余談なのだが、民放で事故関連ニュースの合間に入った TDS の「ディズニー・リズム・オブ・ワールド」の TVCM の冒頭に通学途中の学生や会社員が電車内で踊っているシーンがあり、楽しいはずの TVCM なのに複雑な気持ちになってしまったのは私だけだろうか。

GGNFS-0.76.7-k2

| コメント(0)

matsolve を改造した GGNFS-0.76.7-k2 で 334079 x 335908 の行列の処理が 2.86 時間。同じデータで比べてみないとわからないけれど、以前は 222585 x 223789 の行列に 2.71 時間かかっていたからだいぶ速くなったのではないかと。

追記 GGNFS-0.76.7 の matsolve で 2%まで回した段階で得られた block Lanczos の予測所要時間はおよそ 4.6 時間。他に負荷をかけていないので予測所要時間が大きく外れることはないと考えられるので、単純計算で matsolve 単体が 37%高速化され、全体の所要時間が 1.7 時間短縮されたことになる。30 時間のうちの 1.7 時間だから大したことはないが。

各所から。トレンドマイクロが午前 7 時半頃公開したウイルスパターンファイル 2.594.00 を適用したコンピュータにおいて処理速度が著しく低下する症状が発生したとのこと。11 時頃に公開された 2.596.00 で修正されたものの、運悪くその間に更新を行った報道機関や JR などで業務の一部に影響が及ぶ事態になったらしい。どんな製品も過信は禁物。

追記 土曜日でも対応しているパソコンメーカーのサポート窓口に苦情が殺到してしまったのだとか。

行列の掛け算

| コメント(0)

mult64x64、multT、multnx64、MultB64、MultB_T64 の高速化が一通り完成したので、テストプログラムをまとめ中であります。L2 キャッシュを考慮したら手元の Pentium 4 で MultB64 と MultB_T64 がほぼ倍速で動くようになったのだけれど、Athlon や Opteron では逆効果みたい。

5 月 15 日に予定されていたスペースシャトル・ディスカバリーの打ち上げが 1 週間延期されて 5 月 22 日になりました。2 月にスペースシャトル・コロンビアの事故からちょうど 2 年経ち、早期の打ち上げ再開が期待されていますが、安全性の確認が最優先です。

メモ

| コメント(0)

RetroPC.NET さんから。Production I.G の押井守コラムに X68000 の話題が。

GGNFS-0.76.7

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.7 がリリースされました。blanczos64.c の MultB64 と MultB_T64 にバグを見つけたのでパッチを送って直してもらいました。ML のほうで高速化も試みていますが、今回の更新は行列の掛け算を間違えないようにする最小限度の修正のみです。

今朝の地震

| コメント(0)

6 時 11 分頃、3 月 20 日に震度 6 弱を記録した福岡沖玄海地震の余震と見られる地震があり、福岡で震度 5 強が記録されました。

新ローマ法王

| コメント(0)

第 265 代ローマ法王にドイツ出身のヨゼフ・ラッツィンガー(Joseph Ratzinger)枢機卿(法王庁教理省長官)が選出されました。法王名はベネディクト 16 世(Pope Benedict XVI)。新法王は 78 歳で、過去 300 年で最も高齢で選出された法王なのだそうです。

昨年の暮れ、小惑星 2004 MN4 が 2029 年 4 月 13 日の金曜日に地球に衝突する確率が 1/300 というニュースが一般紙にも掲載されて話題になりました。直後に発生したスマトラ島沖の地震がなければもっと話題になっていたかも知れません。この日記でも衝突の確率が刻々と変化する様子を追い、確率が一時 1/37 まで上昇したことやトリノ・スケールの 4 が初めて使われたことなどを書きました。このとき、NASA のサイトなどに掲載されていたトリノ・スケールの表の 4 のところには次のような簡潔な説明が添えられていました。

A close encounter, with 1% or greater chance of a collision capable of causing regional devastation.
(広域災害をもたらす衝突の確率が 1%以上の接近遭遇です)

2004 MN4 で初めてトリノ・スケールという言葉を知った人にはこの説明は刺激が強すぎて、必要以上に恐怖を感じてしまったかも知れません。この日記では当初から数日以内に衝突の可能性がなくなるかも知れないということを書いていましたが、トリノ・スケールの説明文にも同様の文言が追加され、必要以上に心配しなくてよいことがわかりやすくなりました(一般の人にもわかりやすいように説明文が改められただけで、評価方法が変わったわけではありません)。例えば上記のトリノ・スケール 4 の説明文は次のように変更されました。

A close encounter, meriting attention by astronomers. Current calculations give a 1% or greater chance of collision capable of regional devastation. Most likely, new telescopic observations will lead to re-assignment to Level 0. Attention by public and by public officials is merited if the encounter is less than a decade away.
(天文学者が注目すべき接近遭遇です。現在の予測では広域災害をもたらす衝突の確率が 1%以上です。おそらく今後の望遠鏡による観測によってレベル 0 に変更されるでしょう。接近まで 10 年以内の場合は一般の人々と官公庁も注目すべきです)

2004 MN4 の衝突の可能性が指摘された 2029 年まで 20 年以上ありますから、新しい説明文であれば一般の人々はとりあえず心配しなくてよいことがはっきりします。なお、2004 MN4 が 2029 年に地球に衝突する可能性は既に否定されており、現在は 2034 年と 2035 年の接近がトリノ・スケール 1 に見積もられています。トリノ・スケール 0 の小惑星が 70 個余り、トリノ・スケール 1 の小惑星が 2004 MN4 を含めて 3 個ありますが、トリノ・スケール 2 以上の小惑星は現在はありません。

買収価格は 34 億ドル(3670 億円)。2002 年に和解するまで訴訟合戦を繰り広げていた 2 社も結局こうなるのか。

巡回連絡の罠

| コメント(0)

警察官が戸別訪問して防犯や事故防止のための指導をしたり住民から要望を聞くことは必要だと思う。しかし、警察官が戸別訪問で各戸の具体的な防犯体制をアンケート調査するなんてどう考えてもおかしい。そんな警察官は偽物で、うっかり無防備な箇所がわかるような情報を提供したら後で空き巣に入られるに違いない。気を付けよう。

ホルフィンの赤ちゃん

| コメント(0)

オキゴンドウ(false killer whale)とバンドウイルカ(bottlenose dolphin)の交配種として 19 年前に偶然生まれたホルフィン(wholphin)のケカイマル(Kekaimalu)が女の子を出産したそうだ。父親はバンドウイルカなのでこの子はバンドウイルカの血にオキゴンドウの血が 1/4 混ざっていることになる。ケカイマルの子としては 3 番目。オキゴンドウは 2 頭いてまだどちらが父親か確定していない。名前はまだない。色は母親と同じくオキゴンドウの黒とバンドウイルカの薄いグレーが混ざった感じ。ハワイのオアフ島にあるシー・ライフ・パーク・ハワイ(Sea Life Park Hawaii)で 12 月 23 日に生まれてまだ 4 ヶ月足らずだけれど、大きさは既にバンドウイルカの 1 歳児並みだとか。それでもケカイマルの半分というのだからもっと大きくなるに違いない。

GGNFS-0.76.5

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.5 がリリースされました。

行列の掛け算

| コメント(0)

きのうの multnx64 の実験の 8 分割 MMX 版のソースコード。C=A×B を排他的論理和で計算する。A は n 行 64 列、B は 64 行 64 列の行列で、要素はすべて 1 ビット。x86 の機械語はいまだに端のほうをちょこっとかじった程度だけれど、generic 版をコンパイルしたコードよりも手で書いたほうが明らかに速く動いたときは少し嬉しい。これがドラスティックに速くなるともっと嬉しいのだけれど(1000 行程度の小さい行列のとき GGNFS のものよりも 10 倍速くなったのは機械語のコードを手で書いたからではなくてアルゴリズム上のトリックを使ったから)。しばらくしてから見返したらあまりのへっぽこ具合に眩暈がしたりして。

test_multnx64_mmx_8.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define DEFAULT_MODE 0
#define DEFAULT_ROWS 8192
#define DEFAULT_COUNT 1000

#ifdef __GNUC__
#define ALIGNED16 __attribute__ ((aligned (16)))
#else
#define ALIGNED16
#endif

#if defined(__MINGW32__) || defined(__CYGWIN__)
#define ASM_UL "_"
#else
#define ASM_UL ""
#endif

#define NON_TEMPORAL_MOVE
#ifdef NON_TEMPORAL_MOVE
#define movntq "movntq"
#else
#define movntq "movq"
#endif

typedef long s32;
typedef unsigned long u32;
typedef unsigned long long u64;

u64 multnx64_w[2048] ALIGNED16;
void multnx64(u64 *c, u64 *a, u64 *b, s32 n) {
  asm volatile("\
	xorl	%%eax, %%eax					\n\
	xorl	%%ecx, %%ecx					\n\
1:								\n\
	movq	(%0,%%ecx,2), %%mm0				\n\
	.irpc	b, 123456					\n\
		movq	8*\\b(%0,%%ecx,2), %%mm\\b		\n\
	.endr							\n\
	pxor	%%mm7, %%mm7					\n\
	movq	%%mm7, (%1,%%eax,8)				\n\
	.set	n, 0						\n\
	.irpc	b, \
0102010301020104010201030102010501020103010201040102010301020106\
010201030102010401020103010201050102010301020104010201030102010	\n\
		.set	n, n^(1<<\\b)				\n\
		pxor	%%mm\\b, %%mm7				\n\
		movq	%%mm7, 8*n(%1,%%eax,8)			\n\
	.endr							\n\
	.set	n, n^(1<<7)					\n\
	pxor	8*7(%0,%%ecx,2), %%mm7				\n\
	movq	%%mm7, 8*n(%1,%%eax,8)				\n\
	.irpc	b, \
0102010301020104010201030102010501020103010201040102010301020106\
010201030102010401020103010201050102010301020104010201030102010	\n\
		.set	n, n^(1<<\\b)				\n\
		pxor	%%mm\\b, %%mm7				\n\
		movq	%%mm7, 8*n(%1,%%eax,8)			\n\
	.endr							\n\
	addl	$256, %%eax					\n\
	addb	$32, %%cl					\n\
	jnc	1b						\n\
#	emms" : : "r"(b), "r"(multnx64_w) : "%eax", "%ecx");
  asm volatile("\
	movl	%0, %%esi					\n\
	movl	%1, %%edi					\n\
	movl	%2, %%ecx					\n\
	leal	(%%esi,%%ecx,8), %%esi				\n\
	leal	(%%edi,%%ecx,8), %%edi				\n\
	negl	%%ecx						\n\
1:								\n\
	movl	(%%esi,%%ecx,8), %%ebx				\n\
	movzbl	%%bl, %%eax					\n\
	movzbl	%%bh, %%edx					\n\
	movq	"ASM_UL"multnx64_w(,%%eax,8), %%mm0		\n\
	shrl	$16, %%ebx					\n\
	pxor	"ASM_UL"multnx64_w+8*256*1(,%%edx,8), %%mm0	\n\
	movzbl	%%bl, %%eax					\n\
	movl	4(%%esi,%%ecx,8), %%edx				\n\
	shrl	$8, %%ebx					\n\
	pxor	"ASM_UL"multnx64_w+8*256*2(,%%eax,8), %%mm0	\n\
	movzbl	%%dl, %%eax					\n\
	pxor	"ASM_UL"multnx64_w+8*256*3(,%%ebx,8), %%mm0	\n\
	movzbl	%%dh, %%ebx					\n\
	shrl	$16, %%edx					\n\
	pxor	"ASM_UL"multnx64_w+8*256*4(,%%eax,8), %%mm0	\n\
	movzbl	%%dl, %%eax					\n\
	pxor	"ASM_UL"multnx64_w+8*256*5(,%%ebx,8), %%mm0	\n\
	shrl	$8, %%edx					\n\
	pxor	"ASM_UL"multnx64_w+8*256*6(,%%eax,8), %%mm0	\n\
	pxor	"ASM_UL"multnx64_w+8*256*7(,%%edx,8), %%mm0	\n\
	"movntq"	%%mm0, (%%edi,%%ecx,8)			\n\
	addl	$1, %%ecx					\n\
	jnz	1b						\n\
	emms" : : "m"(a), "m"(c), "m"(n) :
               "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi");
}

int crc16(void *base, size_t nmemb, size_t size) {
  static int *table = NULL;
  int i, j, k;
  if (table == NULL) {
    table = (int *)malloc(sizeof(int) * 256);
    for (i = 0; i < 256; i++) {
      j = i;
      for (k = 0; k < 8; k++) {
        j = (j & 1) == 0 ? j >> 1 : (j >> 1) ^ 0xa001;
      }
      table[i] = j;
    }
  }
  i = 0;
  for (j = 0, k = size * nmemb; j < k; j++) {
    i = (i >> 8) ^ table[(i ^ *((char *)base + j)) & 255];
  }
  return i;
}

int main(int argc, char *argv[]) {
  int mode = DEFAULT_MODE;
  int rows = DEFAULT_ROWS;
  int count = DEFAULT_COUNT;

  switch (argc) {
  case 4:
    sscanf(argv[3], "%d", &count);
  case 3:
    sscanf(argv[2], "%d", &rows);
  case 2:
    sscanf(argv[1], "%d", &mode);
    break;
  default:
    printf("%s mode rows count\n  mode: 0=zero, 1=one, 2=random\n", argv[0]);
    return 1;
  }

  char *temp_a = (char *)malloc(sizeof(u64) * rows + 15);
  char *temp_b = (char *)malloc(sizeof(u64) * 64 + 15);
  char *temp_c = (char *)malloc(sizeof(u64) * rows + 15);
  u64 *a = (u64 *)(((long)temp_a + 15) & -16);
  u64 *b = (u64 *)(((long)temp_b + 15) & -16);
  u64 *c = (u64 *)(((long)temp_c + 15) & -16);

  int i;
  switch (mode) {
  case 0:
    for (i = 0; i < rows; i++) {
      a[i] = 0;
    }
    for (i = 0; i < 64; i++) {
      b[i] = 0;
    }
    break;
  case 1:
    for (i = 0; i < rows; i++) {
      a[i] = 0xffffffffffffffffULL;
    }
    for (i = 0; i < 64; i++) {
      b[i] = 0xffffffffffffffffULL;
    }
    break;
  default:
    for (i = 0; i < rows; i++) {
      a[i] = rand() & 0xffff;
      a[i] = (a[i] << 16) | (rand() & 0xffff);
      a[i] = (a[i] << 16) | (rand() & 0xffff);
      a[i] = (a[i] << 16) | (rand() & 0xffff);
    }
    for (i = 0; i < 64; i++) {
      b[i] = rand() & 0xffff;
      b[i] = (b[i] << 16) | (rand() & 0xffff);
      b[i] = (b[i] << 16) | (rand() & 0xffff);
      b[i] = (b[i] << 16) | (rand() & 0xffff);
    }
  }

  clock_t tm0, tm1;
  {
    clock_t t = clock();
    while ((tm0 = clock()) == t);
  }
  for (i = 0; i < count; i++) {
    multnx64(c, a, b, rows);
  }
  tm1 = clock();

  printf("%s %d %d %d ", argv[0], mode, rows, count);
  printf("%10.3f microsec crc=0x%04x\n",
         ((double)(tm1 - tm0)) / CLOCKS_PER_SEC / count * 1000000,
         crc16(c, rows, sizeof(u64)));

  free(temp_c);
  free(temp_b);
  free(temp_a);
  return 0;
}
Makefile
CC = gcc -Wall -O3 -fomit-frame-pointer -march=pentium4
#CC = gcc -Wall -O3 -fomit-frame-pointer -march=pentium3

all: test_multnx64_mmx_8

test_multnx64_mmx_8: test_multnx64_mmx_8.c
	$(CC) -o test_multnx64_mmx_8 test_multnx64_mmx_8.c

test:
	./test_multnx64_mmx_8 0 1024 10000
	./test_multnx64_mmx_8 1 1024 10000
	./test_multnx64_mmx_8 2 1024 10000
	./test_multnx64_mmx_8 0 16384 1000
	./test_multnx64_mmx_8 1 16384 1000
	./test_multnx64_mmx_8 2 16384 1000
	./test_multnx64_mmx_8 0 262144 100
	./test_multnx64_mmx_8 1 262144 100
	./test_multnx64_mmx_8 2 262144 100
	./test_multnx64_mmx_8 0 4194304 10
	./test_multnx64_mmx_8 1 4194304 10
	./test_multnx64_mmx_8 2 4194304 10

version:
	gcc --version
	as --version
	ld --version

行列の掛け算

| コメント(0)

きょうは multnx64。もともと速かったので期待していたほどの効果は得られなかった。

 matrix size        type            zero       one     random
                                      (milliseconds/call)
   1024x64  old (GGNFS-0.76.0)     0.0969    0.0953    0.0906
   1024x64  new (generic)          0.0234    0.0234    0.0156
   1024x64  new (mmx (8 parts))    0.0109    0.0109    0.0078
   1024x64  new (mmx (6 parts))    0.0140    0.0141    0.0141

  16384x64  old (GGNFS-0.76.0)     0.438     0.438     0.359
  16384x64  new (generic)          0.328     0.328     0.219
  16384x64  new (mmx (8 parts))    0.156     0.156     0.125
  16384x64  new (mmx (6 parts))    0.109     0.109     0.125

 262144x64  old (GGNFS-0.76.0)     6.56      6.72      4.84
 262144x64  new (generic)          5.78      5.94      3.91
 262144x64  new (mmx (8 parts))    2.81      2.82      2.35
 262144x64  new (mmx (6 parts))    2.19      2.19      2.34

4194304x64  old (GGNFS-0.76.0)   104.7     106.3      79.8
4194304x64  new (generic)         93.8      95.4      62.6
4194304x64  new (mmx (8 parts))   46.9      46.9      40.6
4194304x64  new (mmx (6 parts))   35.9      37.5      40.6

GGNFS-0.76.4

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.4 がリリースされました。

MS05-016~MS05-023

| コメント(0)

Microsoft の今月の更新は「重要」が 3 個、「緊急」が 4 個(Exchange Server のものを含めると 5 個)。「緊急」のうち 1 個は Word の脆弱性なので自動更新や Windows Update では修正されません。Word などの Office 関係の更新は Windows Update から Office のアップデートへ進んで行います。他に「Microsoft Windows インストーラ 3.1」と「Windows 悪意のあるソフトウェアの削除ツール - 2005 年 4 月」が出ています。削除ツールについては3 月 9 日の日記を参照してください。

緊急

重要

絵でみるセキュリティ情報

その他

GGNFS-0.76.2

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.2 がリリースされました。

行列の掛け算

| コメント(0)

先日の mult64x64 に続いて multT も改造してみるテスト。multT は要素 1 ビットで nx64 の行列 A,B から 64x64 の行列 C=tAB を求める関数です。GGNFS の blanczos64.c に含まれていて使用頻度が高いらしいので差し替えたら matsolve が少し速くなるかも。

matrix size        type            zero        one     random
                                      (microsecond/call)
    64x64  old (GGNFS-0.76.0)     39.840     40.000     38.440
    64x64  new (generic)           2.970      6.870     17.810
    64x64  new (mmx)               2.970      6.870     17.810

  1024x64  old (GGNFS-0.76.0)    112.500    112.500     90.600
  1024x64  new (generic)          76.500     75.000     46.900
  1024x64  new (mmx)              71.900     71.900     40.600

 16384x64  old (GGNFS-0.76.0)   1672.000   1656.000   1406.000
 16384x64  new (generic)        1125.000   1125.000    688.000
 16384x64  new (mmx)            1062.000   1047.000    562.000

262144x64  old (GGNFS-0.76.0) 134530.000 133910.000 180160.000
262144x64  new (generic)       17820.000  17970.000  11250.000
262144x64  new (mmx)           17190.000  17190.000   9380.000

地震

| コメント(0)

15 時 35 分頃、神奈川東部で震度 3 の地震。津波の心配はなし。震源は千葉県北東部、震源の深さは 80km、規模は M4.4。

GGNFS-0.76.1

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.1 がリリースされました。

地震

| コメント(0)

7 時 22 分頃、茨城南部と千葉北東部で震度 5 強の地震。津波の心配はなし。震源は千葉県北東部(北緯 35.7 度、東経 140.7 度)、震源の深さは 60km、規模は M6.1(気象庁)。

交通機関に影響が出ているので注意。

地震

| コメント(0)

日本時間の 19 時 29 分頃、スマトラ島沖で M6.8 の地震。また、20 時 34 分頃、福岡県で震度 4 の地震。12 月 26 日の M9.0(研究者によっては M9.3~M9.4 と言われることもある)や3 月 29 日の M8.7 があまりにも大きかったので M6.8 が小さく見えてしまいますが、決して小さな地震ではないはずです。数え切れないほどの地震が頻発しているインドネシアでは現地に住む人も救援活動のために向かった人も大変だろうと思います。

行列の掛け算

| コメント(0)

64 行×64 列×1 ビットの行列の乗算ルーチンを何種類か書いて ML に投げてみるテスト。Pentium 4 は Opteron よりもパイプラインが長いので、分岐方向の予測が困難な条件では分岐命令のペナルティが極端に大きくなってしまうことを改めて実感。

GGNFS-0.76.0

| コメント(0)

Chris Monico さんによる数体ふるい法を用いた素因数分解プログラム GGNFS-0.76.0 がリリースされました。

MacIE の文字化け対策

| コメント(0)

報告をくださった方にご協力いただき、リンク集(翻訳・辞書)の自動選択フォームが MacIE で文字化けしないように調整しました。手元で確認できないので細かいことはわかりませんが、一般的に UTF-8 のページが MacIE に限って文字化けしてしまう理由は MacIE の設定で対処できるものが 2 つ、ページの側で対処すべきものが 2 つ、合わせて 4 つあるようです。すべてが必要というわけではないかも知れませんが、まとめると以下のようになります。

(1) MacIE の設定画面の「言語 / フォント」で「ユニバーサル文字(UTF-8)」を選択する。この設定で UTF-8 でないページが読めなくなってしまうので必要なときだけ切り替えなければならないようです。

(2) MacIE の設定画面の「言語 / フォント」の「ユニバーサル文字(UTF-8)」で使用するフォントとして「Osaka」などの日本語に対応しているものを選択する。これはデフォルトで選択されていないかも知れません。

(3) ページの側で META の content と http-equiv の順序を変更する。理由はわかりませんが、MacIE は http-equiv→content の順序で書かないと charset を認識しないようです。

MacIE で文字化けする
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
MacIE で文字化けしない
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

(4) ページの側で TEXTAREA に font-family を指定する。これがないと TEXTAREA に入力した文字だけ化けてしまうことがあるようです。

参考

立花さん も確認していただきありがとうございました。工事中のほうだけ化けたのはリンク集の方だけ (3)(4) の変更を加えた後だったからかも知れません。現在は工事中のほうも変更してあります。

Bruce Dodson さんが 3466+1 の 66 桁の素因数を ECM(楕円曲線法)で発見し、ECM で発見された素因数の世界記録が一気に 7 桁も更新されました。

リンク集(翻訳・辞書)

| コメント(0)

リンク集(翻訳・辞書)が Macintosh で文字化けするとの報告をいただいています。手元に Macintosh がないので症状を確認できないのですが、詳しい報告をいただければ改善できるかも知れません。情報をお持ちの方はご連絡ください。

品川駅(高輪口)前の品川プリンスホテル内に 4 月 8 日にオープンする水族館。都内最大級で、長さ 20 メートルのトンネル大水槽があって、ドワーフソーフィッシュ(ノコギリエイ)さんをはじめとする 300 種 20,000 点の海水魚が展示されて、平日と休前日は 22 時まで営業するらしい。

Google ツールバー 3(ベータ版)

| コメント(0)

マウスオーバー辞書に対応したのは面白い。ただし、肝心の辞書が単語の意味をなるべく少ない文字数で表現しようとしたものらしく、いまいち役に立たない感じもする。自分の好きな辞書に差し替えることはできないだろうか。ウェブブラウザ上で単語の意味がポップアップする仕掛けの実装としては POP 辞書 が見栄えも良くてお勧め。

FFFTP Version 1.92a

| コメント(0)

Sota さんによる Windows 用 FTP クライアント FFFTP Version 1.92a が公開されました。

カトリック教会のことは詳しくないけれど、激務に耐え死の間際まで法王であり続けるという生き方そのもので人々の心を動かせるというのは凄いことだと思う。

RetroPC.NET

| コメント(0)

RetroPC.NET がリニューアル。でもトップから Fellow のページへ辿る方法がわかりませんです。X68000 LIBRARY とか。http://retropc.net/fellow.html の Google のキャッシュは ここ

4 月 3 日追記 Fellow のページへ辿る方法は検討中とのことであります。

GMP-ECM 6.0.1

| コメント(0)

楕円曲線法による素因数分解プログラム GMP-ECM 6.0.1 がリリースされました。本体の更新はバグフィックスですが、INSTALL ファイルに MinGW を使って Windows 環境で make する手順が追加されています。

このアーカイブについて

このページには、2005年4月に書かれた記事が新しい順に公開されています。

前のアーカイブは2005年3月です。

次のアーカイブは2005年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 6.3.3