綾小路龍之介の素人思考

[数値計算] 有理数の積と浮動小数点演算

C:\>perl -e "@d=(1,2,3,4); $c=$d[0]/$d[1]+$d[2]/$d[3]; $a=($d[0]*$d[3]+$d[2]*$d[1])/($d[1]*$d[3]); print \"$c $a\";"
1.25 1.25
C:\>
C:\>perl -e "@d=(1,2,3,4); @r=&d(@d); print $r[0]/$r[1]; sub d(){ $s=$_[0]*$_[3]+$_[2]*$_[1]; $i=$_[1]*$_[3]; return ($s,$i);}"
1.25
C:\>
C:\>perl -le "for(1..10){@r=&d(($_,$_+1,$_+1,$_+1)); print \"$r[0] $r[1]\";} sub d(){return $_[0]*$_[3]+$_[2]*$_[1],$_[1]*$_[3];}"
6 4
15 9
28 16
45 25
66 36
91 49
120 64
153 81
190 100
231 121
C:\>
C:\>perl -le "for(1..20){@d=($_++,$_++,$_++,$_++); @r=&d(@d); print \"@d @r\";} sub d{return $_[0]*$_[3]+$_[2]*$_[1],$_[1]*$_[3];}"
1 2 3 4 10 8
2 3 4 5 22 15
3 4 5 6 38 24
4 5 6 7 58 35
5 6 7 8 82 48
6 7 8 9 110 63
7 8 9 10 142 80
8 9 10 11 178 99
9 10 11 12 218 120
10 11 12 13 262 143
11 12 13 14 310 168
12 13 14 15 362 195
13 14 15 16 418 224
14 15 16 17 478 255
15 16 17 18 542 288
16 17 18 19 610 323
17 18 19 20 682 360
18 19 20 21 758 399
19 20 21 22 838 440
20 21 22 23 922 483
C:\>

下のようにやっても同じなんだな。

C:\>perl -le "for(1..20){@d=($_..$_+3);@r=&d(@d);print \"@d @r\";} sub d{return $_[0]*$_[3]+$_[2]*$_[1],$_[1]*$_[3];}"

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2007-11-10T21:12:25+09:00
  2. Modified: 2007-11-10T04:41:58+09:00
  3. Generated: 2017-02-04T23:09:17+09:00