K.Sasada's Home Page

Diary - 2007 November

研究日記

霜月

_29(Thu)

ミーティングの日程を変えて貰った! これで参加できる.

_28(Wed)

ComSys2007.


[ylug:11553] 第82回カーネル読書会のおしらせ (GRAPE, GRAPE-DR と HPC の将来)

なーにー.超聞きたいのに,ミーティングの約束が.うーん.間に合うかなあ.

あー,ちょっと無理ぽいなぁ.あぁ・・・.しょんぼりだ.


こういう場で初座長だった.


海の上でbmobile.さすがになかなかつながらない.

_27(Tue)

ComSys2007.


福岡に行く時間,結局どうしたもんかなぁ....

_26(Mon)

やべぇ.久しぶりにむちゃくちゃ緊張する.


いろいろと終わった.


難しいことは考えずに,好きにプログラミングをして生きていくためにはどうすればいいだろうか.


博士論文審査が終わったので,ダイエットをしよう.今,体重計に乗るのがとても怖い.

_25(Sun)

http://www.radiumsoftware.com/0304.html

自分の使用している gcc について,指定可能なコマンドライン・オプションを調べるには, "-v --help" をコマンドラインに渡して gcc を起動すればいい。組み込まれているすべてのオプションを列挙することができる。

しらんかった! 人生の何割かは損していた気分だ.


あまりにへこんでいるので,やめておこう.

_24(Sat)

D論終わったらコードたくさん書こう.


sqrtf なんてのがあるんだなぁ.知らなかった.計算時間はいかほど違うものなのかしらん.


うう,集中力が切れた.

_23(Fri)

vmware 6.0.2.


Virtual Machine Showdown: Stack versus Registers

Nov. 2007 ってあんた.超楽しかった.


Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters (2005)

なんつうか,超楽しい.こんなことが出来るのか.これは凄い.なんで知らなかったんだ.なんで実装しなかったんだ.論文に興奮したのは久しぶり.

_22(Thu)

体調悪い.


ついうっかり現実逃避に r6rs.chm を作ってしまった.便利.ドキュメントのライセンスがわからないんだよな.どこに連絡していいのかもわからない.

_ (Fri Nov 23 04:34:54 JST 2007)

 R6RS -- Rationale -- の Summary に "We intend this report to belong to the entire Scheme community" 云々とあるので、あまり気にしなくてよいのでは

_shiro(Fri Nov 23 08:45:18 JST 2007)

 確か自由に翻訳したりリファレンスマニュアルに取り込んだりすることは推奨されてたはずなんだけど、どこに書いてあったかな。r6rs-discuss MLで聞いてみましょうか。

_ささだ(Fri Nov 23 11:54:05 JST 2007)

 chm 自体に需要がどれくらいあるかはわからないのですが,今後のためにどっかに明記して貰えるようにしていただけると良いかと思います.

_21(Wed)

なんというか,YARV のスレッド生成はもっと速くなることを知った.ちゃんと評価しないと駄目だ.

あー,ボトルネックがあそこにあったなんて.

_n(Wed Nov 21 09:15:53 JST 2007)

 どこ

_20(Tue)

28.


後頭部が痛い.


お陰様で,下記の要領で博士論文,本審査が行われます.どなたでもご参加頂けますので,ご都合が付く方がいらっしゃいましたらお立ち寄り頂ければ幸いです.

日時
11/26 (月) 15:00 〜
場所
秋葉原ダイビル 13F 情報理工秋葉原拠点 大会議室
主査
竹内郁雄教授(東大)
副査
平木敬教授,萩谷昌己教授,稲葉真理准教授(東大),千葉滋准教授(東工大)
題目
高速なRuby用仮想マシンの開発

どう見てもネタのレベルに比べて主査・副査の先生方が豪華すぎです.おかしい.


缶に入ったコーヒー豆を買ってきたら,缶切りがなかった.超しょんぼりだ.


来年は,もっと幸せになってるんだろうか.


月が綺麗だ.

_n(Tue Nov 20 15:21:29 JST 2007)

 om

_d(Tue Nov 20 18:55:16 JST 2007)

 ed

_19(Mon)

電車に乗るために50mくらい走ったら,もう死にそうになった.

_18(Sun)

Vista on Let's note T5 が重い.どうやら HDD がやばいくらい遅い気がするんだけど,どうしたもんかな.


OSが作りたい.作りたい.作りたい.


久々に gauche-refj-0.8.12.chm 等を作る.相変わらず凄い量.

_kt(Mon Nov 19 10:31:28 JST 2007)

 ヒント:OSkit

_ひげぽん(Tue Nov 20 23:14:18 JST 2007)

 一緒に作りましょうよ(ぉ

_17(Sat)

C で VALUE を引数に受け取る関数 void foo(VALUE v) があったとする.Ruby のオブジェクト v を dl を利用して foo(v) と呼び出すことは出来るんだろうか.というか出来ていないので困っている.dl のソースを見る限り,1.9ではできそうな気がしないでもないんだけど.うーん.


だましだましやってみた.で,あんまり速くなんなかった.5.4 -> 1.6 (sec).

数式を C に落とせますよ,という話なんだけど,数式だけで複雑なことをすることは少ないだろうから,やっぱり制御構文を書くことができないと意味がない感じですねぇ.どうしようかな.そのまま ruby2c になりそうだが....

require 'pp'
require 'tempfile'
require 'dl/import'
require 'rbconfig'

class FormulaBuilder
  def initialize n
    @args = (1..n).map{|e| "arg#{e}"}
    @node = yield(*@args.map{|e| Node.new e})
  end

  def compile
<<EOS__
#include <ruby.h>

static double
v2d(VALUE v)
{
  VALUE fv = rb_Float(v);
  return RFLOAT(fv)->value;
}

void foo(){printf("foo!!");}

VALUE
func_#{object_id}(VALUE self, #{@args.map{|e| 'VALUE v_' + e}.join(', ')})
{
#{@args.map{|e| "double #{e} = v2d(v_#{e});"}.join("\n")}
double r = #{@node.compile};
return rb_float_new(r);
}

void
regist(unsigned long obj)
{
  rb_define_singleton_method(obj, "calc", func_#{object_id}, #{@args.size});
}

EOS__
  end

  def build
    cprog = compile
    tmp = open('cprog', 'w') # Tempfile.new('cprog')
    tmp.puts cprog
    def tmp.path; 'cprog'; end
    tmp.close
    cmd = [Config::CONFIG['LIBRUBY_LDSHARED'],
           "-I", Config::CONFIG['archdir'],
           "-o cprog.so -x c -O2 #{tmp.path}",
           Config::CONFIG["LIBRUBYARG_SHARED"], "-lm",
           ].join(' ')
    puts cmd if $DEBUG
    raise "can't build" unless system(cmd)
    funcname = "regist"

    foo = Module.new{
      extend DL::Importable
      dlload 'cprog.so'
      extern "void regist(unsigned long)"
    }
    foo.regist(self.object_id << 1)
  end

  class Node
    def initialize e
      @e = e
    end

    def method_missing op, *args
      case args.size
      when 1
        arg = args[0]
        arg = Node.new(Float(arg)) unless Node === arg
        BinNode.new(op, self, arg)
      when 0
        Node.new("#{op}(#{@e})")
      else
        raise
      end
    end

    def compile
      @e
    end
  end

  class BinNode < Node
    def initialize op, a, b
      @op = op
      @a = a
      @b = b
    end
    attr_reader :op, :a, :b

    def compile
      a = @a.compile
      b = @b.compile
      "(#{a} #{@op} #{b})"
    end
  end
end

fb = FormulaBuilder.new(2){|a, b|
  (a+b) * (a-b) * (a+b) * (a-b) * (a+b) * (a-b) * (a+b) * (a-b) * (a+b) * (a-b)
  #(a.sin * b.sin) + (a.cos * b.cos)
}

fb.build
a, b = 1, 2
max = 1_000_000
require 'benchmark'
Benchmark.bm{|x|
  x.report{
    max.times{
      fb.calc(a, b)
    }
  }
  x.report{
    max.times{
      (a+b) * (a-b) * (a+b) * (a-b) * (a+b) * (a-b) * (a+b) * (a-b) * (a+b) * (a-b)
      #((a+b) * (a-b) * 10_000 - 3.14)
    }
  }
}

_16(Fri)

考えすぎて,ドツボにはまる.いや,ただ単にいつも考えてないだけか.

_15(Thu)

うは.最適化オプションによって,浮動小数点のバイナリ表現が違う気がする.

#include <stdio.h>
#include <stdlib.h>

typedef  long long VALUE;

void sb(VALUE l)
{
    int i;
    printf("%20lld - ", l);
    for (i=0; i<64; i++) {
	printf("%d", (l & (VALUE)(1LL << (63 - i))) != 0LL);
    }
    printf("\n");
}

VALUE float_new(double d) {
    VALUE *lp = (VALUE *)&d;
    VALUE l = *lp;
    int exp = (l >> 52) & 0x07ff;
    int exp2 = exp - 896;

    if ((exp2 & 0x0700) == 0) {
	VALUE s = l & (1LL << 63);
	VALUE m = l & 0xFFFFFFFFFFFFFLL;
	VALUE e = ((VALUE)exp2) << 55;
	VALUE r = s | e | (m << 3) | 0x07;
	return r;
    }
    else {
	double *dp = (double *)malloc(sizeof(double));
	*dp = d;
	return (VALUE)dp;
    }
}

double float_value(VALUE v)
{
    if ((v & 0x07) == 0x07) {
	VALUE s = v & (1LL << 63);
	VALUE e = ((v >> 55) & 0x07ff) + 896;
	VALUE m = (v >> 3) & 0xFFFFFFFFFFFFFLL;
	VALUE r = s | (e << 52) | m;
#if 0
	printf("v "); sb(v);
	printf("s "); sb(s);
	printf("e "); sb(e);
	printf("m "); sb(m);
	printf("r "); sb(r);
#endif
	return *(double *)(&r);
    }
    else {
	double *dp = (double *)v;
	double d = *dp;
	free(dp);
	return d;
    }
}

int
main(int argc, char *argv[])
{
    double d = argc == 1 ? 1.0 : 1.0e-50;
    int i;
    printf("d: %g\n", d);

    for (i=0; i<0xffffff; i++) {
	VALUE v = float_new(d);
	double r = float_value(v);
    }

#if 0
    for (i=0; i<100; i++) {
	VALUE v = float_new(d);
	double r = float_value(v);
	printf("result: %d (d: %g, r: %g)\n", d == r, d, r);
	d *= 10;
    }
#endif
    return 0;
}

現実逃避に作ってみたが.64bit マシンで答えがあわねー.32bit マシンだと動いたんだけど.どうしたもんですかねぇ.


.globl float_new
	.type	float_new, @function
float_new:
.LFB27:
	pushq	%rbp
.LCFI8:
	movl	$.LC7, %edi
	pushq	%rbx
.LCFI9:
	subq	$8, %rsp
.LCFI10:
	movq	(%rsp), %rbx   # (a)
	movsd	%xmm0, (%rsp)  # (b)
	movq	%rbx, %rax
	sarq	$52, %rax
        .....

どう見ても (a) と (b) の順番が違うように見えるんだけど,気のせいだろうか.


http://d.hatena.ne.jp/sumii/20071115/p2

union を使ったらすんなり動きました orz

#include <stdio.h>
#include <stdlib.h>

typedef long VALUE;

void sb(VALUE l)
{
    int i;
    printf("%20lld - ", l);
    for (i=0; i<64; i++) {
	printf("%d", (l & (VALUE)(1LL << (63 - i))) != 0LL);
    }
    printf("\n");
}

inline VALUE
d2v(double d)
{
  register union {
    double d;
    VALUE l;
  } u;
  u.d = d;
  // printf("o "); sb(u.l);
  return u.l;
}

inline double
v2d(VALUE v)
{
  register union {
    double d;
    VALUE l;
  } u;
  u.l = v;
  return u.d;
}

VALUE float_new(double d) {
    VALUE l = d2v(d);
    int exp = (l >> 52) & 0x07ffLL;
    int exp2 = exp - 896;

    if ((exp2 & 0x0700) == 0) {
	VALUE s = l & (1LL << 63);
	VALUE m = l & 0xFFFFFFFFFFFFFLL;
	VALUE e = ((VALUE)exp2) << 55;
	VALUE r = s | e | (m << 3) | 0x07;
	return r;
    }
    else {
	double *dp = (double *)malloc(sizeof(double));
	*dp = d;
	return (VALUE)dp;
    }
}

double float_value(VALUE v)
{
    if ((v & 0x07) == 0x07) {
	VALUE s = v & (1LL << 63);
	VALUE e = ((v >> 55) & 0x07ff) + 896;
	VALUE m = (v >> 3) & 0xFFFFFFFFFFFFFLL;
	VALUE r = s | (e << 52) | m;
	double d;
#if 0
	printf("v "); sb(v);
	printf("s "); sb(s);
	printf("e "); sb(e);
	printf("m "); sb(m);
	printf("r "); sb(r);
#endif
	return v2d(r);
    }
    else {
	double *dp = (double *)v;
	double d = *dp;
	free(dp);
	return d;
    }
}

int
main(int argc, char *argv[])
{
  double d = 1.0e-40;
    int i;
    printf("d: %g\n", d);

#if 1
    for (i=0; i<80; i++) {
	VALUE v = float_new(d);
	double r = float_value(v);
	printf("result: %d (d: %g, r: %g)\n", d == r, d, r);
	d *= 10;
    }
#endif
    return 0;
}

ご参考:

d2v:
        movsd   %xmm0, -8(%rsp)
        movq    -8(%rsp), %rdx
        movq    %rdx, %rax
        ret

v2d:
        movq    %rdi, -8(%rsp)
        movlpd  -8(%rsp), %xmm1
        movsd   %xmm1, %xmm0
        ret

やはりメモリに書いちゃうのねえ.


しかし,なんで union を思いつかないかな.


須藤語録:

ギブアンドテイクなんてそんなになくて、無差別なギブと思い込み なテイクの方がたくさんあるんだと思います。

カッコイー.

_14(Wed)

逃避しすぎ.


浮動小数点数について,全然知らないので試してみた.double が IEEE754 のビットパターンになっているかどうかを知る方法ってどうやるんだろう?

void show_double(long long *lp)
{
    long long l = *lp;
    int i=0;
    for (i=0; i<64; i++) {
	printf("%d", (l & (long long)(1LL << (63 - i))) != 0LL);
	if (i == 0 /* sign */ || i == 11 /* exp */) {
	    printf(" ");
	}
    }
    printf("\n");
}

#define MAX 100
#define DD(e) 1.0e-##e
#define D(e) DD(e)

int
main()
{
    double d = 1.0e-100, t;
    float f;
    int i;

    for(i=0; i<MAX*2; i+=1) {
	d *= 10;
	
	printf("d %10g ", d);
	show_double((long long*)&d);

	f = d;
	t = f;
	printf("f %10g ", t);
	show_double((long long*)&t);
	if (f == d) {
	    printf("eq\n");
	}
    }
}

#if 0
result on gcc 3.4.4 cygwin:
d      1e-99 0 01010110110 0001011111110111110101001110110110001100001100111110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-98 0 01010111001 0101110111110101110010100010100011101111010000001110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-97 0 01010111100 1011010101110011001111001011001100101011000100010010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-96 0 01011000000 0001000101101000000001011110111111111010111010101011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-95 0 01011000011 0101010111000010000001110110101111111001101001010110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-94 0 01011000110 1010101100110010100010010100011011111000000011101100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-93 0 01011001010 0000101011111111100101011100110001011011000010010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-92 0 01011001101 0100110110111111011110110011111101110001110010111001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-91 0 01011010000 1010000100101111010110100000111101001110001111100111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-90 0 01011010100 0000010010111101100110000100100110010000111001110000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-89 0 01011010111 0100010111101100111111100101101111110101001000001100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-88 0 01011011010 1001011101101000001111011111001011110010011010001111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-87 0 01011011101 1111110101000010010011010110111110101111000000110011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-86 0 01011100001 0011111001001001011100000110010111001101011000100000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-85 0 01011100100 1000110111011011110011000111111101000000101110101000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-84 0 01011100111 1111000101010010101111111001111100010000111010010010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-83 0 01011101011 0011011011010011101101111100001101101010100100011011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-82 0 01011101110 1000010010001000101001011011010001000101001101100010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-81 0 01011110001 1110010110101010110011110010000101010110100000111010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-80 0 01011110101 0010111110001010110000010111010011010110000100100100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-79 0 01011111000 0111101101101101011100011101001000001011100101101101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-78 0 01011111011 1101101001001000110011100100011010001110011111001000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-77 0 01011111111 0010100001101101100000001110110000011001000011011101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-76 0 01100000010 0111001010001000111000010010011100011111010100010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-75 0 01100000101 1100111100101011000110010111000011100111001001011001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-74 0 01100001001 0010000101111010111011111110011010010000011101111000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-73 0 01100001100 0110100111011001101010111110000000110100100101010110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-72 0 01100001111 1100010001010000000101101101100001000001101110101100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-71 0 01100010011 0001101010110010000011100100011100101001000101001100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-70 0 01100010110 0110000101011110100100011101100011110011010110011111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-69 0 01100011001 1011100110110110001101100100111100110000001100000111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-68 0 01100011101 0001010000010001111000011111000101111110000111100100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-67 0 01100100000 0101100100010110010110100110110111011101101001011101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-66 0 01100100011 1010111101011011111100010000100101010101000011110100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-65 0 01100100111 0000110110011001011101101010010111010101001010011000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-64 0 01100101010 0101000011111111110101000100111101001010011100111110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-63 0 01100101101 1010010100111111110010010110001100011101000100001110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-62 0 01100110001 0000011101000111110111011101110111110010001010101001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-61 0 01100110100 0100100100011001110101010101010101101110101101010011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-60 0 01100110111 1001101101100000010010101010101011001010011000101000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-59 0 01100111011 0000000100011100001011101010101010111110011111011001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-58 0 01100111110 0100000101100011001110100101010101101110000111001111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-57 0 01101000001 1001000110111100000010001110101011001001101001000011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-56 0 01101000100 1111011000101011000010110010010101111100000011010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-55 0 01101001000 0011100111011010111001101111011101101101100010000100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-54 0 01101001011 1000100001010001101000001011010101001000111010100101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-53 0 01101001110 1110101001100110000010001110001010011011001001001110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-52 0 01101010010 0011001001111111110001011000110110100000111101110001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-51 0 01101010101 0111111100011111101101101111000100001001001101001101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-50 0 01101011000 1101111011100111101001001010110101001011100000100000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-49 0 01101011100 0010101101010000110001101110110001001111001100010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-48 0 01101011111 0111011000100100111110001010011101100010111111011001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-47 0 01101100010 1101001110101110001101101101000100111011101111001111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-46 0 01101100110 0010010001001100111000100100001011000101010101100001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d      1e-45 0 01101101001 0110110101100000000110101101001101110110101010111001
f 1.4013e-45 0 01101101010 0000000000000000000000000000000000000000000000000000
d      1e-44 0 01101101100 1100100010111000001000011000100001010100010101100111
f 9.80909e-45 0 01101101100 1100000000000000000000000000000000000000000000000000
d      1e-43 0 01101110000 0001110101110011000101001111010100110100101101100000
f 9.94922e-44 0 01101110000 0001110000000000000000000000000000000000000000000000
d      1e-42 0 01101110011 0110010011001111110110100011001010000001111000111000
f 1.00053e-42 0 01101110011 0110010100000000000000000000000000000000000000000000
d      1e-41 0 01101110110 1011111000000011110100001011111100100010010111000110
f 9.99967e-42 0 01101110110 1011111000000000000000000000000000000000000000000000
d      1e-40 0 01101111010 0001011011000010011000100111011101110101011110011100
f 9.99995e-41 0 01101111010 0001011011000010000000000000000000000000000000000000
d      1e-39 0 01101111101 0101110001110010111110110001010101010010110110000011
f      1e-39 0 01101111101 0101110001110011000000000000000000000000000000000000
d      1e-38 0 01110000000 1011001110001111101110011101101010100111100011100100
f      1e-38 0 01110000000 1011001110001111101110000000000000000000000000000000
d      1e-37 0 01110000100 0001000000111001110101000010100010101000101110001110
f      1e-37 0 01110000100 0001000000111001110101000000000000000000000000000000
d      1e-36 0 01110000111 0101010001001000010010010011001011010010111001110010
f      1e-36 0 01110000111 0101010001001000010010100000000000000000000000000000
d      1e-35 0 01110001010 1010100101011010010110110111111110000111101000001110
f      1e-35 0 01110001010 1010100101011010010111000000000000000000000000000000
d      1e-34 0 01110001110 0000100111011000011110010010111110110100110001001001
f      1e-34 0 01110001110 0000100111011000011110100000000000000000000000000000
d      1e-33 0 01110010001 0100110001001110100101110111101110100001111101011011
f      1e-33 0 01110010001 0100110001001110100110000000000000000000000000000000
d      1e-32 0 01110010100 1001111101100010001111010101101010001010011100110010
f      1e-32 0 01110010100 1001111101100010001111100000000000000000000000000000
d      1e-31 0 01110011000 0000001110011101011001100101100010010110100001111111
f      1e-31 0 01110011000 0000001110011101011001100000000000000000000000000000
d      1e-30 0 01110011011 0100010010000100101111111110111010111100001010011111
f      1e-30 0 01110011011 0100010010000100110000000000000000000000000000000000
d      1e-29 0 01110011110 1001010110100101111011111110101001101011001101000111
f      1e-29 0 01110011110 1001010110100101111100000000000000000000000000000000
d      1e-28 0 01110100001 1111101100001111011010111110010100000110000000011001
f      1e-28 0 01110100001 1111101100001111011011000000000000000000000000000000
d      1e-27 0 01110100101 0011110011101001101000110110111100100011110000010000
f      1e-27 0 01110100101 0011110011101001101001000000000000000000000000000000
d      1e-26 0 01110101000 1000110000100100000011000100101011101100101100010100
f      1e-26 0 01110101000 1000110000100100000011000000000000000000000000000000
d      1e-25 0 01110101011 1110111100101101000011110101110110100111110111011001
f      1e-25 0 01110101011 1110111100101101000100000000000000000000000000000000
d      1e-24 0 01110101111 0011010101111100001010011001101010001000111010101000
f      1e-24 0 01110101111 0011010101111100001010100000000000000000000000000000
d      1e-23 0 01110110010 1000001011011011001101000000000100101011001001010010
f      1e-23 0 01110110010 1000001011011011001101000000000000000000000000000000
d      1e-22 0 01110110101 1110001110010010000000010000000101110101111011100110
f      1e-22 0 01110110101 1110001110010010000000100000000000000000000000000000
d      1e-21 0 01110111001 0010111000111011010000001010000011101001101101010000
f      1e-21 0 01110111001 0010111000111011010000000000000000000000000000000000
d      1e-20 0 01110111100 0111100111001010000100001100100100100100001000100100
f      1e-20 0 01110111100 0111100111001010000100000000000000000000000000000000
d      1e-19 0 01110111111 1101100000111100100101001111101101101101001010101101
f      1e-19 0 01110111111 1101100000111100100101000000000000000000000000000000
d      1e-18 0 01111000011 0010011100100101110111010001110100100100001110101100
f      1e-18 0 01111000011 0010011100100101110111100000000000000000000000000000
d      1e-17 0 01111000110 0111000011101111010101000110010001101101010010010111
f      1e-17 0 01111000110 0111000011101111010101000000000000000000000000000000
d      1e-16 0 01111001001 1100110100101011001010010111110110001000100110111101
f      1e-16 0 01111001001 1100110100101011001010100000000000000000000000000000
d      1e-15 0 01111001101 0010000000111010111110011110111001110101011000010110
f      1e-15 0 01111001101 0010000000111010111110100000000000000000000000000000
d      1e-14 0 01111010000 0110100001001001101110000110101000010010101110011100
f      1e-14 0 01111010000 0110100001001001101110000000000000000000000000000000
d      1e-13 0 01111010011 1100001001011100001001101000010010010111011010000011
f      1e-13 0 01111010011 1100001001011100001001100000000000000000000000000000
d      1e-12 0 01111010111 0001100101111001100110000001001011011110101000010010
f      1e-12 0 01111010111 0001100101111001100110000000000000000000000000000000
d      1e-11 0 01111011010 0101111111010111111111100001011110010110010010010110
f      1e-11 0 01111011010 0101111111010111111111100000000000000000000000000000
d      1e-10 0 01111011101 1011011111001101111111011001110101111011110110111100
f      1e-10 0 01111011101 1011011111001101111111100000000000000000000000000000
d      1e-09 0 01111100001 0001001011100000101111101000001001101101011010010110
f      1e-09 0 01111100001 0001001011100000101111100000000000000000000000000000
d      1e-08 0 01111100100 0101011110011000111011100010001100001000110000111100
f      1e-08 0 01111100100 0101011110011000111011100000000000000000000000000000
d      1e-07 0 01111100111 1010110101111111001010011010101111001010111101001011
f      1e-07 0 01111100111 1010110101111111001010100000000000000000000000000000
d      1e-06 0 01111101011 0000110001101111011110100000101101011110110110001111
f      1e-06 0 01111101011 0000110001101111011110100000000000000000000000000000
d      1e-05 0 01111101110 0100111110001011010110001000111000110110100011110011
f      1e-05 0 01111101110 0100111110001011010110000000000000000000000000000000
d     0.0001 0 01111110001 1010001101101110001011101011000111000100001100110000
f     0.0001 0 01111110001 1010001101101110001011100000000000000000000000000000
d      0.001 0 01111110101 0000011000100100110111010010111100011010100111111110
f      0.001 0 01111110101 0000011000100100110111100000000000000000000000000000
d       0.01 0 01111111000 0100011110101110000101000111101011100001010001111110
f       0.01 0 01111111000 0100011110101110000101000000000000000000000000000000
d        0.1 0 01111111011 1001100110011001100110011001100110011001100110011110
f        0.1 0 01111111011 1001100110011001100110100000000000000000000000000000
d          1 0 01111111111 0000000000000000000000000000000000000000000000000011
f          1 0 01111111111 0000000000000000000000000000000000000000000000000000
d         10 0 10000000010 0100000000000000000000000000000000000000000000000100
f         10 0 10000000010 0100000000000000000000000000000000000000000000000000
d        100 0 10000000101 1001000000000000000000000000000000000000000000000101
f        100 0 10000000101 1001000000000000000000000000000000000000000000000000
d       1000 0 10000001000 1111010000000000000000000000000000000000000000000110
f       1000 0 10000001000 1111010000000000000000000000000000000000000000000000
d      10000 0 10000001100 0011100010000000000000000000000000000000000000000100
f      10000 0 10000001100 0011100010000000000000000000000000000000000000000000
d     100000 0 10000001111 1000011010100000000000000000000000000000000000000101
f     100000 0 10000001111 1000011010100000000000000000000000000000000000000000
d      1e+06 0 10000010010 1110100001001000000000000000000000000000000000000110
f      1e+06 0 10000010010 1110100001001000000000000000000000000000000000000000
d      1e+07 0 10000010110 0011000100101101000000000000000000000000000000000100
f      1e+07 0 10000010110 0011000100101101000000000000000000000000000000000000
d      1e+08 0 10000011001 0111110101111000010000000000000000000000000000000101
f      1e+08 0 10000011001 0111110101111000010000000000000000000000000000000000
d      1e+09 0 10000011100 1101110011010110010100000000000000000000000000000110
f      1e+09 0 10000011100 1101110011010110010100000000000000000000000000000000
d      1e+10 0 10000100000 0010101000000101111100100000000000000000000000000100
f      1e+10 0 10000100000 0010101000000101111100100000000000000000000000000000
d      1e+11 0 10000100011 0111010010000111011011101000000000000000000000000101
f      1e+11 0 10000100011 0111010010000111011011100000000000000000000000000000
d      1e+12 0 10000100110 1101000110101001010010100010000000000000000000000110
f      1e+12 0 10000100110 1101000110101001010010100000000000000000000000000000
d      1e+13 0 10000101010 0010001100001001110011100101010000000000000000000100
f      1e+13 0 10000101010 0010001100001001110011100000000000000000000000000000
d      1e+14 0 10000101101 0110101111001100010000011110100100000000000000000101
f      1e+14 0 10000101101 0110101111001100010000100000000000000000000000000000
d      1e+15 0 10000110000 1100011010111111010100100110001101000000000000000110
f      1e+15 0 10000110000 1100011010111111010100100000000000000000000000000000
d      1e+16 0 10000110100 0001110000110111100100110111111000001000000000000100
f      1e+16 0 10000110100 0001110000110111100101000000000000000000000000000000
d      1e+17 0 10000110111 0110001101000101011110000101110110001010000000000101
f      1e+17 0 10000110111 0110001101000101011110000000000000000000000000000000
d      1e+18 0 10000111010 1011110000010110110101100111010011101100100000000110
f      1e+18 0 10000111010 1011110000010110110101100000000000000000000000000000
d      1e+19 0 10000111110 0001010110001110010001100000100100010011110100000100
f      1e+19 0 10000111110 0001010110001110010001100000000000000000000000000000
d      1e+20 0 10001000001 0101101011110001110101111000101101011000110001000101
f      1e+20 0 10001000001 0101101011110001110110000000000000000000000000000000
d      1e+21 0 10001000100 1011000110101110010011010110111000101110111101010110
f      1e+21 0 10001000100 1011000110101110010011100000000000000000000000000000
d      1e+22 0 10001001000 0000111100001100111100000110010011011101010110010110
f      1e+22 0 10001001000 0000111100001100111100000000000000000000000000000000
d      1e+23 0 10001001011 0101001011010000001011000111111000010100101011111100
f      1e+23 0 10001001011 0101001011010000001011000000000000000000000000000000
d      1e+24 0 10001001110 1010011110000100001101111001110110011001110110111011
f      1e+24 0 10001001110 1010011110000100001110000000000000000000000000000000
d      1e+25 0 10001010010 0000100010110010101000101100001010000000001010010101
f      1e+25 0 10001010010 0000100010110010101000100000000000000000000000000000
d      1e+26 0 10001010101 0100101011011111010010110111001100100000001100111010
f      1e+26 0 10001010101 0100101011011111010011000000000000000000000000000000
d      1e+27 0 10001011000 1001110110010111000111100100111111101000010000001000
f      1e+27 0 10001011000 1001110110010111000111100000000000000000000000000000
d      1e+28 0 10001011100 0000001001111110011100101111000111110001001010000101
f      1e+28 0 10001011100 0000001001111110011100100000000000000000000000000000
d      1e+29 0 10001011111 0100001100011110000011111010111001101101011100100110
f      1e+29 0 10001011111 0100001100011110000100000000000000000000000000000000
d      1e+30 0 10001100010 1001001111100101100100111001101000001000110011110000
f      1e+30 0 10001100010 1001001111100101100101000000000000000000000000000000
d      1e+31 0 10001100101 1111100011011110111110001000000010001011000000101100
f      1e+31 0 10001100101 1111100011011110111110000000000000000000000000000000
d      1e+32 0 10001101001 0011101110001011010110110101000001010110111000011100
f      1e+32 0 10001101001 0011101110001011010111000000000000000000000000000000
d      1e+33 0 10001101100 1000101001101110001100100010010001101100100110100011
f      1e+33 0 10001101100 1000101001101110001100100000000000000000000000000000
d      1e+34 0 10001101111 1110110100001001101111101010110110000111110000001100
f      1e+34 0 10001101111 1110110100001001101111100000000000000000000000000000
d      1e+35 0 10001110011 0011010000100110000101110010110001110100110110001000
f      1e+35 0 10001110011 0011010000100110000110000000000000000000000000000000
d      1e+36 0 10001110110 1000000100101111100111001111011110010010000011101010
f      1e+36 0 10001110110 1000000100101111100111000000000000000000000000000000
d      1e+37 0 10001111001 1110000101111011100001000011010101110110100100100100
f      1e+37 0 10001111001 1110000101111011100001000000000000000000000000000000
d      1e+38 0 10001111101 0010110011101101001100101010000101101010000110110110
f      1e+38 0 10001111101 0010110011101101001100100000000000000000000000000000
d      1e+39 0 10010000000 0111100000101000011111110100100111000100101000100100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+40 0 10010000011 1101011000110010100111110001110000110101110010101101
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+41 0 10010000111 0010010111011111101000110111000110100001100111101100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+42 0 10010001010 0110111101010111100011000100111000001010000001100111
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+43 0 10010001101 1100101100101101011011110110000110001100100010000001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+44 0 10010010001 0001111011111100011001011001110011110111110101010001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+45 0 10010010100 0110011010111011011111110000010000110101110010100101
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+46 0 10010010111 1100000001101010010111101100010101000011001111001110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+47 0 10010011011 0001100001000010011110110011101101001010000001100001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+48 0 10010011110 0101111001010011000110100000101000011100100001111001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+49 0 10010100001 1011010111100111111000001000110010100011101010010111
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+50 0 10010100101 0001000110110000111011000101011111100110010010011110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+51 0 10010101000 0101011000011101001001110110110111011111110111000110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+52 0 10010101011 1010101110100100011100010100100101010111110100111000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+53 0 10010101111 0000101101000110110001101100110111010110111001000011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+54 0 10010110010 0100111000011000011110001000000101001100100111010100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+55 0 10010110101 1010000110011110100101101010000110011111110001001001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+56 0 10010111001 0000010100000011000111100010010100000011110110101110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+57 0 10010111100 0100011001000011111001011010111001000100110100011010
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+58 0 10010111111 1001011111010100110111110001100111010110000001100000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+59 0 10011000010 1111110111001010000101101110000001001011100001111000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+60 0 10011000110 0011111010011110010011100100110000101111001101001011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+61 0 10011001001 1000111001000101111000011101111100111011000000011110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+62 0 10011001100 1111000111010111010110100101011100001001110000100110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+63 0 10011010000 0011011100100110100110000111011001100110000110011000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+64 0 10011010011 1000010011110000001111101001001111111111100111111110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+65 0 10011010110 1110011000101100010011100011100011111111100001111110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+66 0 10011011010 0010111111011011101100001110001110011111101101001111
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+67 0 10011011101 0111101111010010100111010001110010000111101000100011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+68 0 10011100000 1101101011000111010001000110001110101001100010101100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+69 0 10011100100 0010100010111100100010101011111001001001111101101100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+70 0 10011100111 0111001011101011101011010110110111011100011101000111
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+71 0 10011101010 1100111110100110100110001100100101010011100100011001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+72 0 10011101110 0010000111001000000111110111110111010100001110110000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+73 0 10011110001 0110101000111010001001110101110101001001010010011100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+74 0 10011110100 1100010011001000101100010011010010011011100111000011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+75 0 10011111000 0001101011111101011011101100000011100001010000011010
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+76 0 10011111011 0110000110111100110010100111000100011001100100100000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+77 0 10011111110 1011101000101011111111010000110101011111111101101000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+78 0 10100000010 0001010001011011011111100010100001011011111110100001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+79 0 10100000101 0101100101110010010111011011001001110010111110001001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+80 0 10100001000 1010111111001110111101010001111100001111101101101011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+81 0 10100001100 0000110111100001010110010011001101101001110100100011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+82 0 10100001111 0101000101011001101011111000000001000100010001101100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+83 0 10100010010 1010010110110000000110110110000001010101010110000111
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+84 0 10100010110 0000011110001110000100010001110000110101010101110100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+85 0 10100011001 0100100101110001100101010110001101000010101011010001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+86 0 10100011100 1001101111001101111110101011110000010011010110000101
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+87 0 10100100000 0000000101100000101111001011010110001100000101110011
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+88 0 10100100011 0100000110111000111010111110001011101111000111010000
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+89 0 10100100110 1001001000100111001001101101101110101010111001000100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+90 0 10100101001 1111011010110000111100001001001010010101100111010101
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+91 0 10100101101 0011101000101110100101100101101110011101100000100101
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+92 0 10100110000 1000100010111010001110111111001010000100111000101110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+93 0 10100110011 1110101011101000110010101110111100100110000110111010
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+94 0 10100110111 0011001011010001011111101101010101110111110100010100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+95 0 10100111010 0111111110000101110111101000101011010101110001011001
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+96 0 10100111101 1101111101100111010101100010110110001011001101101111
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+97 0 10101000001 0010101110100000100101011101110001110111000000100101
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+98 0 10101000100 0111011010001000101110110101001110010100110000101110
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d      1e+99 0 10101000111 1101010000101010111010100010100001111001111100111010
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+100 0 10101001011 0010010010011010110100100101100101001100001110000100
f        inf 0 11111111111 0000000000000000000000000000000000000000000000000000


result on VC8:
d     1e-099 0 01010110110 0001011111110111110101001110110110001100001100111110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-098 0 01010111001 0101110111110101110010100010100011101111010000001110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-097 0 01010111100 1011010101110011001111001011001100101011000100010010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-096 0 01011000000 0001000101101000000001011110111111111010111010101011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-095 0 01011000011 0101010111000010000001110110101111111001101001010110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-094 0 01011000110 1010101100110010100010010100011011111000000011101100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-093 0 01011001010 0000101011111111100101011100110001011011000010010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-092 0 01011001101 0100110110111111011110110011111101110001110010111001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-091 0 01011010000 1010000100101111010110100000111101001110001111100111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-090 0 01011010100 0000010010111101100110000100100110010000111001110000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-089 0 01011010111 0100010111101100111111100101101111110101001000001100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-088 0 01011011010 1001011101101000001111011111001011110010011010001111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-087 0 01011011101 1111110101000010010011010110111110101111000000110011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-086 0 01011100001 0011111001001001011100000110010111001101011000100000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-085 0 01011100100 1000110111011011110011000111111101000000101110101000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-084 0 01011100111 1111000101010010101111111001111100010000111010010010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-083 0 01011101011 0011011011010011101101111100001101101010100100011011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-082 0 01011101110 1000010010001000101001011011010001000101001101100010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-081 0 01011110001 1110010110101010110011110010000101010110100000111010
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-080 0 01011110101 0010111110001010110000010111010011010110000100100100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-079 0 01011111000 0111101101101101011100011101001000001011100101101101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-078 0 01011111011 1101101001001000110011100100011010001110011111001000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-077 0 01011111111 0010100001101101100000001110110000011001000011011101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-076 0 01100000010 0111001010001000111000010010011100011111010100010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-075 0 01100000101 1100111100101011000110010111000011100111001001011001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-074 0 01100001001 0010000101111010111011111110011010010000011101111000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-073 0 01100001100 0110100111011001101010111110000000110100100101010110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-072 0 01100001111 1100010001010000000101101101100001000001101110101100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-071 0 01100010011 0001101010110010000011100100011100101001000101001100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-070 0 01100010110 0110000101011110100100011101100011110011010110011111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-069 0 01100011001 1011100110110110001101100100111100110000001100000111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-068 0 01100011101 0001010000010001111000011111000101111110000111100100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-067 0 01100100000 0101100100010110010110100110110111011101101001011101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-066 0 01100100011 1010111101011011111100010000100101010101000011110100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-065 0 01100100111 0000110110011001011101101010010111010101001010011000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-064 0 01100101010 0101000011111111110101000100111101001010011100111110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-063 0 01100101101 1010010100111111110010010110001100011101000100001110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-062 0 01100110001 0000011101000111110111011101110111110010001010101001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-061 0 01100110100 0100100100011001110101010101010101101110101101010011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-060 0 01100110111 1001101101100000010010101010101011001010011000101000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-059 0 01100111011 0000000100011100001011101010101010111110011111011001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-058 0 01100111110 0100000101100011001110100101010101101110000111001111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-057 0 01101000001 1001000110111100000010001110101011001001101001000011
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-056 0 01101000100 1111011000101011000010110010010101111100000011010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-055 0 01101001000 0011100111011010111001101111011101101101100010000100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-054 0 01101001011 1000100001010001101000001011010101001000111010100101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-053 0 01101001110 1110101001100110000010001110001010011011001001001110
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-052 0 01101010010 0011001001111111110001011000110110100000111101110001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-051 0 01101010101 0111111100011111101101101111000100001001001101001101
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-050 0 01101011000 1101111011100111101001001010110101001011100000100000
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-049 0 01101011100 0010101101010000110001101110110001001111001100010100
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-048 0 01101011111 0111011000100100111110001010011101100010111111011001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-047 0 01101100010 1101001110101110001101101101000100111011101111001111
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-046 0 01101100110 0010010001001100111000100100001011000101010101100001
f          0 0 00000000000 0000000000000000000000000000000000000000000000000000
d     1e-045 0 01101101001 0110110101100000000110101101001101110110101010111001
f 1.4013e-045 0 01101101010 0000000000000000000000000000000000000000000000000000
d     1e-044 0 01101101100 1100100010111000001000011000100001010100010101100111
f 9.80909e-045 0 01101101100 1100000000000000000000000000000000000000000000000000
d     1e-043 0 01101110000 0001110101110011000101001111010100110100101101100000
f 9.94922e-044 0 01101110000 0001110000000000000000000000000000000000000000000000
d     1e-042 0 01101110011 0110010011001111110110100011001010000001111000111000
f 1.00053e-042 0 01101110011 0110010100000000000000000000000000000000000000000000
d     1e-041 0 01101110110 1011111000000011110100001011111100100010010111000110
f 9.99967e-042 0 01101110110 1011111000000000000000000000000000000000000000000000
d     1e-040 0 01101111010 0001011011000010011000100111011101110101011110011100
f 9.99995e-041 0 01101111010 0001011011000010000000000000000000000000000000000000
d     1e-039 0 01101111101 0101110001110010111110110001010101010010110110000011
f     1e-039 0 01101111101 0101110001110011000000000000000000000000000000000000
d     1e-038 0 01110000000 1011001110001111101110011101101010100111100011100100
f     1e-038 0 01110000000 1011001110001111101110000000000000000000000000000000
d     1e-037 0 01110000100 0001000000111001110101000010100010101000101110001110
f     1e-037 0 01110000100 0001000000111001110101000000000000000000000000000000
d     1e-036 0 01110000111 0101010001001000010010010011001011010010111001110010
f     1e-036 0 01110000111 0101010001001000010010100000000000000000000000000000
d     1e-035 0 01110001010 1010100101011010010110110111111110000111101000001110
f     1e-035 0 01110001010 1010100101011010010111000000000000000000000000000000
d     1e-034 0 01110001110 0000100111011000011110010010111110110100110001001001
f     1e-034 0 01110001110 0000100111011000011110100000000000000000000000000000
d     1e-033 0 01110010001 0100110001001110100101110111101110100001111101011011
f     1e-033 0 01110010001 0100110001001110100110000000000000000000000000000000
d     1e-032 0 01110010100 1001111101100010001111010101101010001010011100110010
f     1e-032 0 01110010100 1001111101100010001111100000000000000000000000000000
d     1e-031 0 01110011000 0000001110011101011001100101100010010110100001111111
f     1e-031 0 01110011000 0000001110011101011001100000000000000000000000000000
d     1e-030 0 01110011011 0100010010000100101111111110111010111100001010011111
f     1e-030 0 01110011011 0100010010000100110000000000000000000000000000000000
d     1e-029 0 01110011110 1001010110100101111011111110101001101011001101000111
f     1e-029 0 01110011110 1001010110100101111100000000000000000000000000000000
d     1e-028 0 01110100001 1111101100001111011010111110010100000110000000011001
f     1e-028 0 01110100001 1111101100001111011011000000000000000000000000000000
d     1e-027 0 01110100101 0011110011101001101000110110111100100011110000010000
f     1e-027 0 01110100101 0011110011101001101001000000000000000000000000000000
d     1e-026 0 01110101000 1000110000100100000011000100101011101100101100010100
f     1e-026 0 01110101000 1000110000100100000011000000000000000000000000000000
d     1e-025 0 01110101011 1110111100101101000011110101110110100111110111011001
f     1e-025 0 01110101011 1110111100101101000100000000000000000000000000000000
d     1e-024 0 01110101111 0011010101111100001010011001101010001000111010101000
f     1e-024 0 01110101111 0011010101111100001010100000000000000000000000000000
d     1e-023 0 01110110010 1000001011011011001101000000000100101011001001010010
f     1e-023 0 01110110010 1000001011011011001101000000000000000000000000000000
d     1e-022 0 01110110101 1110001110010010000000010000000101110101111011100110
f     1e-022 0 01110110101 1110001110010010000000100000000000000000000000000000
d     1e-021 0 01110111001 0010111000111011010000001010000011101001101101010000
f     1e-021 0 01110111001 0010111000111011010000000000000000000000000000000000
d     1e-020 0 01110111100 0111100111001010000100001100100100100100001000100100
f     1e-020 0 01110111100 0111100111001010000100000000000000000000000000000000
d     1e-019 0 01110111111 1101100000111100100101001111101101101101001010101101
f     1e-019 0 01110111111 1101100000111100100101000000000000000000000000000000
d     1e-018 0 01111000011 0010011100100101110111010001110100100100001110101100
f     1e-018 0 01111000011 0010011100100101110111100000000000000000000000000000
d     1e-017 0 01111000110 0111000011101111010101000110010001101101010010010111
f     1e-017 0 01111000110 0111000011101111010101000000000000000000000000000000
d     1e-016 0 01111001001 1100110100101011001010010111110110001000100110111101
f     1e-016 0 01111001001 1100110100101011001010100000000000000000000000000000
d     1e-015 0 01111001101 0010000000111010111110011110111001110101011000010110
f     1e-015 0 01111001101 0010000000111010111110100000000000000000000000000000
d     1e-014 0 01111010000 0110100001001001101110000110101000010010101110011100
f     1e-014 0 01111010000 0110100001001001101110000000000000000000000000000000
d     1e-013 0 01111010011 1100001001011100001001101000010010010111011010000011
f     1e-013 0 01111010011 1100001001011100001001100000000000000000000000000000
d     1e-012 0 01111010111 0001100101111001100110000001001011011110101000010010
f     1e-012 0 01111010111 0001100101111001100110000000000000000000000000000000
d     1e-011 0 01111011010 0101111111010111111111100001011110010110010010010110
f     1e-011 0 01111011010 0101111111010111111111100000000000000000000000000000
d     1e-010 0 01111011101 1011011111001101111111011001110101111011110110111100
f     1e-010 0 01111011101 1011011111001101111111100000000000000000000000000000
d     1e-009 0 01111100001 0001001011100000101111101000001001101101011010010110
f     1e-009 0 01111100001 0001001011100000101111100000000000000000000000000000
d     1e-008 0 01111100100 0101011110011000111011100010001100001000110000111100
f     1e-008 0 01111100100 0101011110011000111011100000000000000000000000000000
d     1e-007 0 01111100111 1010110101111111001010011010101111001010111101001011
f     1e-007 0 01111100111 1010110101111111001010100000000000000000000000000000
d     1e-006 0 01111101011 0000110001101111011110100000101101011110110110001111
f     1e-006 0 01111101011 0000110001101111011110100000000000000000000000000000
d     1e-005 0 01111101110 0100111110001011010110001000111000110110100011110011
f     1e-005 0 01111101110 0100111110001011010110000000000000000000000000000000
d     0.0001 0 01111110001 1010001101101110001011101011000111000100001100110000
f     0.0001 0 01111110001 1010001101101110001011100000000000000000000000000000
d      0.001 0 01111110101 0000011000100100110111010010111100011010100111111110
f      0.001 0 01111110101 0000011000100100110111100000000000000000000000000000
d       0.01 0 01111111000 0100011110101110000101000111101011100001010001111110
f       0.01 0 01111111000 0100011110101110000101000000000000000000000000000000
d        0.1 0 01111111011 1001100110011001100110011001100110011001100110011110
f        0.1 0 01111111011 1001100110011001100110100000000000000000000000000000
d          1 0 01111111111 0000000000000000000000000000000000000000000000000011
f          1 0 01111111111 0000000000000000000000000000000000000000000000000000
d         10 0 10000000010 0100000000000000000000000000000000000000000000000100
f         10 0 10000000010 0100000000000000000000000000000000000000000000000000
d        100 0 10000000101 1001000000000000000000000000000000000000000000000101
f        100 0 10000000101 1001000000000000000000000000000000000000000000000000
d       1000 0 10000001000 1111010000000000000000000000000000000000000000000110
f       1000 0 10000001000 1111010000000000000000000000000000000000000000000000
d      10000 0 10000001100 0011100010000000000000000000000000000000000000000100
f      10000 0 10000001100 0011100010000000000000000000000000000000000000000000
d     100000 0 10000001111 1000011010100000000000000000000000000000000000000101
f     100000 0 10000001111 1000011010100000000000000000000000000000000000000000
d     1e+006 0 10000010010 1110100001001000000000000000000000000000000000000110
f     1e+006 0 10000010010 1110100001001000000000000000000000000000000000000000
d     1e+007 0 10000010110 0011000100101101000000000000000000000000000000000100
f     1e+007 0 10000010110 0011000100101101000000000000000000000000000000000000
d     1e+008 0 10000011001 0111110101111000010000000000000000000000000000000101
f     1e+008 0 10000011001 0111110101111000010000000000000000000000000000000000
d     1e+009 0 10000011100 1101110011010110010100000000000000000000000000000110
f     1e+009 0 10000011100 1101110011010110010100000000000000000000000000000000
d     1e+010 0 10000100000 0010101000000101111100100000000000000000000000000100
f     1e+010 0 10000100000 0010101000000101111100100000000000000000000000000000
d     1e+011 0 10000100011 0111010010000111011011101000000000000000000000000101
f     1e+011 0 10000100011 0111010010000111011011100000000000000000000000000000
d     1e+012 0 10000100110 1101000110101001010010100010000000000000000000000110
f     1e+012 0 10000100110 1101000110101001010010100000000000000000000000000000
d     1e+013 0 10000101010 0010001100001001110011100101010000000000000000000100
f     1e+013 0 10000101010 0010001100001001110011100000000000000000000000000000
d     1e+014 0 10000101101 0110101111001100010000011110100100000000000000000101
f     1e+014 0 10000101101 0110101111001100010000100000000000000000000000000000
d     1e+015 0 10000110000 1100011010111111010100100110001101000000000000000110
f     1e+015 0 10000110000 1100011010111111010100100000000000000000000000000000
d     1e+016 0 10000110100 0001110000110111100100110111111000001000000000000100
f     1e+016 0 10000110100 0001110000110111100101000000000000000000000000000000
d     1e+017 0 10000110111 0110001101000101011110000101110110001010000000000101
f     1e+017 0 10000110111 0110001101000101011110000000000000000000000000000000
d     1e+018 0 10000111010 1011110000010110110101100111010011101100100000000110
f     1e+018 0 10000111010 1011110000010110110101100000000000000000000000000000
d     1e+019 0 10000111110 0001010110001110010001100000100100010011110100000100
f     1e+019 0 10000111110 0001010110001110010001100000000000000000000000000000
d     1e+020 0 10001000001 0101101011110001110101111000101101011000110001000101
f     1e+020 0 10001000001 0101101011110001110110000000000000000000000000000000
d     1e+021 0 10001000100 1011000110101110010011010110111000101110111101010110
f     1e+021 0 10001000100 1011000110101110010011100000000000000000000000000000
d     1e+022 0 10001001000 0000111100001100111100000110010011011101010110010110
f     1e+022 0 10001001000 0000111100001100111100000000000000000000000000000000
d     1e+023 0 10001001011 0101001011010000001011000111111000010100101011111100
f     1e+023 0 10001001011 0101001011010000001011000000000000000000000000000000
d     1e+024 0 10001001110 1010011110000100001101111001110110011001110110111011
f     1e+024 0 10001001110 1010011110000100001110000000000000000000000000000000
d     1e+025 0 10001010010 0000100010110010101000101100001010000000001010010101
f     1e+025 0 10001010010 0000100010110010101000100000000000000000000000000000
d     1e+026 0 10001010101 0100101011011111010010110111001100100000001100111010
f     1e+026 0 10001010101 0100101011011111010011000000000000000000000000000000
d     1e+027 0 10001011000 1001110110010111000111100100111111101000010000001000
f     1e+027 0 10001011000 1001110110010111000111100000000000000000000000000000
d     1e+028 0 10001011100 0000001001111110011100101111000111110001001010000101
f     1e+028 0 10001011100 0000001001111110011100100000000000000000000000000000
d     1e+029 0 10001011111 0100001100011110000011111010111001101101011100100110
f     1e+029 0 10001011111 0100001100011110000100000000000000000000000000000000
d     1e+030 0 10001100010 1001001111100101100100111001101000001000110011110000
f     1e+030 0 10001100010 1001001111100101100101000000000000000000000000000000
d     1e+031 0 10001100101 1111100011011110111110001000000010001011000000101100
f     1e+031 0 10001100101 1111100011011110111110000000000000000000000000000000
d     1e+032 0 10001101001 0011101110001011010110110101000001010110111000011100
f     1e+032 0 10001101001 0011101110001011010111000000000000000000000000000000
d     1e+033 0 10001101100 1000101001101110001100100010010001101100100110100011
f     1e+033 0 10001101100 1000101001101110001100100000000000000000000000000000
d     1e+034 0 10001101111 1110110100001001101111101010110110000111110000001100
f     1e+034 0 10001101111 1110110100001001101111100000000000000000000000000000
d     1e+035 0 10001110011 0011010000100110000101110010110001110100110110001000
f     1e+035 0 10001110011 0011010000100110000110000000000000000000000000000000
d     1e+036 0 10001110110 1000000100101111100111001111011110010010000011101010
f     1e+036 0 10001110110 1000000100101111100111000000000000000000000000000000
d     1e+037 0 10001111001 1110000101111011100001000011010101110110100100100100
f     1e+037 0 10001111001 1110000101111011100001000000000000000000000000000000
d     1e+038 0 10001111101 0010110011101101001100101010000101101010000110110110
f     1e+038 0 10001111101 0010110011101101001100100000000000000000000000000000
d     1e+039 0 10010000000 0111100000101000011111110100100111000100101000100100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+040 0 10010000011 1101011000110010100111110001110000110101110010101101
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+041 0 10010000111 0010010111011111101000110111000110100001100111101100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+042 0 10010001010 0110111101010111100011000100111000001010000001100111
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+043 0 10010001101 1100101100101101011011110110000110001100100010000001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+044 0 10010010001 0001111011111100011001011001110011110111110101010001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+045 0 10010010100 0110011010111011011111110000010000110101110010100101
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+046 0 10010010111 1100000001101010010111101100010101000011001111001110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+047 0 10010011011 0001100001000010011110110011101101001010000001100001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+048 0 10010011110 0101111001010011000110100000101000011100100001111001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+049 0 10010100001 1011010111100111111000001000110010100011101010010111
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+050 0 10010100101 0001000110110000111011000101011111100110010010011110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+051 0 10010101000 0101011000011101001001110110110111011111110111000110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+052 0 10010101011 1010101110100100011100010100100101010111110100111000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+053 0 10010101111 0000101101000110110001101100110111010110111001000011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+054 0 10010110010 0100111000011000011110001000000101001100100111010100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+055 0 10010110101 1010000110011110100101101010000110011111110001001001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+056 0 10010111001 0000010100000011000111100010010100000011110110101110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+057 0 10010111100 0100011001000011111001011010111001000100110100011010
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+058 0 10010111111 1001011111010100110111110001100111010110000001100000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+059 0 10011000010 1111110111001010000101101110000001001011100001111000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+060 0 10011000110 0011111010011110010011100100110000101111001101001011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+061 0 10011001001 1000111001000101111000011101111100111011000000011110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+062 0 10011001100 1111000111010111010110100101011100001001110000100110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+063 0 10011010000 0011011100100110100110000111011001100110000110011000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+064 0 10011010011 1000010011110000001111101001001111111111100111111110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+065 0 10011010110 1110011000101100010011100011100011111111100001111110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+066 0 10011011010 0010111111011011101100001110001110011111101101001111
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+067 0 10011011101 0111101111010010100111010001110010000111101000100011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+068 0 10011100000 1101101011000111010001000110001110101001100010101100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+069 0 10011100100 0010100010111100100010101011111001001001111101101100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+070 0 10011100111 0111001011101011101011010110110111011100011101000111
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+071 0 10011101010 1100111110100110100110001100100101010011100100011001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+072 0 10011101110 0010000111001000000111110111110111010100001110110000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+073 0 10011110001 0110101000111010001001110101110101001001010010011100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+074 0 10011110100 1100010011001000101100010011010010011011100111000011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+075 0 10011111000 0001101011111101011011101100000011100001010000011010
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+076 0 10011111011 0110000110111100110010100111000100011001100100100000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+077 0 10011111110 1011101000101011111111010000110101011111111101101000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+078 0 10100000010 0001010001011011011111100010100001011011111110100001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+079 0 10100000101 0101100101110010010111011011001001110010111110001001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+080 0 10100001000 1010111111001110111101010001111100001111101101101011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+081 0 10100001100 0000110111100001010110010011001101101001110100100011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+082 0 10100001111 0101000101011001101011111000000001000100010001101100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+083 0 10100010010 1010010110110000000110110110000001010101010110000111
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+084 0 10100010110 0000011110001110000100010001110000110101010101110100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+085 0 10100011001 0100100101110001100101010110001101000010101011010001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+086 0 10100011100 1001101111001101111110101011110000010011010110000101
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+087 0 10100100000 0000000101100000101111001011010110001100000101110011
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+088 0 10100100011 0100000110111000111010111110001011101111000111010000
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+089 0 10100100110 1001001000100111001001101101101110101010111001000100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+090 0 10100101001 1111011010110000111100001001001010010101100111010101
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+091 0 10100101101 0011101000101110100101100101101110011101100000100101
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+092 0 10100110000 1000100010111010001110111111001010000100111000101110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+093 0 10100110011 1110101011101000110010101110111100100110000110111010
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+094 0 10100110111 0011001011010001011111101101010101110111110100010100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+095 0 10100111010 0111111110000101110111101000101011010101110001011001
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+096 0 10100111101 1101111101100111010101100010110110001011001101101111
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+097 0 10101000001 0010101110100000100101011101110001110111000000100101
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+098 0 10101000100 0111011010001000101110110101001110010100110000101110
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+099 0 10101000111 1101010000101010111010100010100001111001111100111010
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
d     1e+100 0 10101001011 0010010010011010110100100101100101001100001110000100
f     1.#INF 0 11111111111 0000000000000000000000000000000000000000000000000000
#endif


今手元にあるメールアドレスがどれくらいあるか考えてみる.

  • nifty.com
  • atdot.net
  • gmail.com
  • acm.org
  • ruby-lang.org
  • 農工大の
  • 職場の

結局 atdot.net に集約してるんだけどね.ruby-lang.org の使いどころがないなあ.

_13(Tue)

self.foo() で private な foo が呼べないのは,なんでなんでしたっけ?


今日の中央線は踏み出しそうになって危なかった.


また,ちゃんとソース読めよ,と怒られそうだ.


種まきの日.


腰が痛い.変な姿勢がたたってる.


福岡のホテルの予約をした.


Nokia E90 を貰う.これはいいものだ.

_戯(Tue Nov 13 16:19:14 JST 2007)

 こんにちわ。"private に設定されたメソッドは関数形式でしか呼び出せません" のことでしょうか?

_ささだ(Tue Nov 13 22:44:14 JST 2007)

 self なんだからいいじゃん,というわけにも行かないですかねぇ.

_mrkn(Wed Nov 14 01:33:05 JST 2007)

 private メソッドの位置づけは難しいですよね.__send__ で呼び出せてしまいますし.

_12(Mon)

うーん,慣れないことをするとRubyをあんまり使っていないことがばれてしまう.


http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/44209

irb(main):001:0> RUBY_VERSION
=> "1.9.0"
irb(main):002:0> a=[1,2]
=> [1, 2]
irb(main):003:0> a.sort{|x, y| y<=>x}
=> [2, 1]
irb(main):004:0> a
=> [1, 2]
irb(main):005:0> a.sort{|a, b| b<=>a}
=> [2, 1]
irb(main):006:0> a
=> [1, 2]

これ,1.8 ではなんか警告とか出すんだろうか?

_11(Sun)

http://sho.tdiary.net/20071110.html#p01

よくわかんないんですが,sshd で PermitRootLogin yes な環境なんて存在するんでしょうか.デフォルトでは,ってことなのかなぁ.あと,PasswordAuthentication yes なんて環境も,いろいろと問題を孕んでいるような気はするのですが,デフォルトではそうなんだろうなぁ.こういうサイトって多いらしいんだよな.デフォルトでオフになってるほうが(最初は面倒でも)後が楽だと思うんだけど.

(もちろん,ローカルなら云々,はあるんですが)

自分で管理している環境では,AllowUsers で絞ってるんだけど(たいてい自分しか使ってないので),あんまり設定サイトでこれをすすめているところを見ない.しかし,この設定って辞書攻撃すると有効なユーザ名がわかっちゃうからまずい,とかあるのかなぁ.ある気がするなぁ.

ぐぐったら結構すすめているサイトがあって安心した.


原先生のインタビューに同席するべき人って誰がいるだろう?


*@ って斬新だなあ.使いどころがよくわかんないけど.

_うえだ(Sun Nov 11 11:08:40 JST 2007)

 www.openssh.com で配布されている source コードでは PermitRootLogin も PasswordAuthentication も yes になってますよ。source から入れる人はこれくらいサクッと直すから構わないのでしょうけど。

_うえだ(Sun Nov 11 11:09:38 JST 2007)

 あ、リンク張り間違えましたorz(http://www.openssh.com/)

_ささだ(Sun Nov 11 11:13:45 JST 2007)

 いやいや.私もソースコードからビルドしたことはありませんが,臆病なので外にさらすサービスの設定を気にします.気にすると,無制限にroot ログインを(テキストパスワードで)許す環境とか想像が出来ないんだけど,どうなんでしょうね.剛毅な方が多いのか.

_うえだ(Sun Nov 11 13:44:07 JST 2007)

 剛毅って言うより単なる無知でしょう ^^;)。私も運用環境では PermitRootLogin = PasswordAuthentication = no で、AllowUsers = hogehoge してます。

_ただただし(Mon Nov 12 11:34:43 JST 2007)

 PermitRootLoginは普通はNoだけど、今回の話は(ユーザがいじらない前提の)PDAのことなので、いろんな制約を考慮したらアリだと思う。sudoするだけで余分にメモリ食うわけだし。

_10(Sat)

誰かのSF作品で(星界の人だったかな),世の中のすべての音楽パターンを世界中に発信して,すべての音楽にたいして著作権を主張,とかなんとか.

その話はそこで終わってたけど,その著作権が切れたら,すべての音楽の著作権は主張できなくなるのかな.

_7(Wed)

アメリカいってた人が mixi に色々書いてた.よくそんな余裕あるなぁ.もう,何も出来なかった.

なんというか,あっちでは何も出来なかった.もう英語だけでいっぱいいっぱい.

_4(Sun)

基調講演.

日本人のたどたどしい英語(と言っても,まつもとさんは凄い流ちょうだけれど)を基調講演としてこんなに大人数が真剣に聞いている,というのはRubyだけなんじゃないだろうか.


http://www.rubyist.net/~matz/20071013.html#p03

結局,そうなのかもしんないですねぇ.逆輸入が日本で流行らせる一番の方法って.

_さ(Tue Nov 06 18:03:39 JST 2007)

 帰国

_3(Sat)

2日目.

_2(Fri)

@RubyConf 2007 会場

_1(Thu)

そういえば Rails 本 2nd もらってました.勉強します.


RubyConf に持って行かなきゃいけないものってなんじゃろ.

_まつもと(Thu Nov 01 06:23:17 JST 2007)

 パスポート、チケット、PCでは。

_ささだ(Thu Nov 01 10:48:33 JST 2007)

 DSの英語付けを持って行こうかと.

_まつもと(Thu Nov 01 12:49:07 JST 2007)

 英語漬け? 超泥縄ですね。好きです、そういう態度。

_さ(Thu Nov 01 13:28:26 JST 2007)

 いや あっちのやつらにやらせ

_さ(Thu Nov 01 15:12:47 JST 2007)

 さよなら日本

_kt(Thu Nov 01 22:33:59 JST 2007)

 いってらっしゃい

Sasada Koichi / sasada@namikilab.tuat.ac.jp
$Date: 2003/04/28 10:27:51 $