5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

浮動小数

1 :デフォルトの名無しさん:03/02/21 05:22
っていらないでしょ。

固定小数マンセー

2 :デフォルトの名無しさん:03/02/21 05:28
終了

3 :デフォルトの名無しさん:03/02/21 05:45
少しは懲りろ!   ./ \ \  / ̄ ̄ ̄ ̄ ̄ ̄
       ∧_∧/     ̄  < また貴様か!
      (;´Д`)     i i i    \______
      /    ヽ _   i i i--、
     ./| |   | |   ̄ ̄ ̄ |:::::|.
    / \ヽ/| |       ノ__ノ..
   /   \\| |
   / /⌒\ し(メ    .i i i . .
 / /    > ) \  ノノノ
/ /     / /    .\_  ザックザック
し'     (_つ   /:::::/::...   /ヽ
          ; "ノ・ ./∴: / )i iヽ-、_へ    ,ヘ
          '',, : :―― / / i i i iヽ . ̄ ゙― ノ /
    n_    _/;    i  .ノ / /ノ-' ̄ ゙ ― 、__ノ
  _ノ 二二二、_( _Д_ ;)-ヽ_ノ-'>>1
  ゙ー ''~      ∨ ̄∨

4 :デフォルトの名無しさん:03/02/21 06:19
いつも小数点の位置は固定だけど?

円周率は 0.314159265 E+1

0の次にしか小数点はこない。


5 :デフォルトの名無しさん:03/02/21 06:37
intが64bitになれば、ますます固定小数点演算の需要は増えるね。


6 :デフォルトの名無しさん:03/02/21 06:41
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< 2/22(土) 16時と21時
                 \_/   \_________  
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< 梅田マルビルの電光掲示板に…
 『キタ━(゚∀゚)━!!!!』 >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」
               ̄     / /
                    ̄
詳細はココ→ http://life2.2ch.net/test/read.cgi/offreg/1044221627/l50

7 :デフォルトの名無しさん:03/02/21 07:31

「このまま一生彼女ができないのでは…」

 私は社会学を専攻している者です。社会学や周辺の学問を利用し、実践的な
恋愛理論を開発しております。机上の空論に終わらず、あくまで実践的。効果
は絶大です。この理論は私自身の苦悩から生まれました。モテないことに深く
悩んでいた私は社会学部に入り、恋愛をはじめとするコミュニケーションにつ
いて考察することを決意。開発期間およそ6年。やっと研究が実を結びました。
ルックスなんて恋愛に関係ないということを自ら証明したのです。今回はその
集大成を公開しようと、メールマガジン発行を決めました。すでに数回発行し
ておりますが、購読者にはバックナンバーが閲覧できますのでご安心を!

 今ならまだ間に合います。春、出会いの季節に幸せが訪れるかどうかは、あな
たの選択次第です。絶対に後悔はさせません。「90日彼女ゲットプログラム」
もちろん購読は無料! → → http://www.h5.dion.ne.jp/~psysys/index.html


8 :デフォルトの名無しさん:03/02/21 07:38
http://sagatoku.fc2web.com/
あなたの探し物こちらで見つかります

9 :デフォルトの名無しさん:03/02/21 09:43
なんか最近糞スレ多くねぇか?

10 :デフォルトの名無しさん:03/02/21 11:07
固定小数なら0.00000000000000000000000000000000000000000000000000000000128とかどう(ry

11 :デフォルトの名無しさん:03/02/21 11:59


12 :デフォルトの名無しさん:03/02/21 22:26
>>5
long使わない理由は?

13 :デフォルトの名無しさん:03/02/22 16:57
山の浮動小数点???
ってなんか北斗の拳におったな

14 :デフォルトの名無しさん:03/02/22 17:43
>>5
それってC++のint?

15 :デフォルトの名無しさん:03/02/22 19:25
>>12
intが64bit -> 64bit cpu
ってことでしょ。

16 :デフォルトの名無しさん:03/02/22 19:44
浮動小数点って誤差あるのに用途あるの?

17 :デフォルトの名無しさん:03/02/22 19:56
あらゆる計測機器は誤差があるけど用途もあります。

18 :デフォルトの名無しさん:03/02/22 20:04
>>16
科学技術計算には使えるぞ。

19 :デフォルトの名無しさん:03/02/22 20:15
>>16
誤差の無い測量がこのよにあるとでも思ったか?
誤差を確実にこの世から無くせた奴は神

20 :デフォルトの名無しさん:03/02/22 20:16
>>15
古い31bitsマシンとの互換性はどうなる?

21 :デフォルトの名無しさん:03/02/22 20:59
それを言うならlong longを使ったほうがいいと思うけど

22 :デフォルトの名無しさん:03/02/22 20:59
いくら古くったって、wordサイズが素数のCPUとかってあったのか?

23 :デフォルトの名無しさん:03/02/22 23:51
>>5の言いたいことがよく理解できない。
だれか解説できる?


24 :デフォルトの名無しさん:03/02/23 05:09
sizeof(double) == sizeof(int)

25 :デフォルトの名無しさん:03/02/24 04:31
>>16
あのなあ、固定小数点だろうと
その数が平方などによって得られたものなら
無理数になるものも丸めて無理やりむりやり有理数
した誤差を持った値なんだぞ。

26 :デフォルトの名無しさん:03/02/24 04:35
金融では良く使うね>固定小数

27 :デフォルトの名無しさん:03/02/24 04:51
>>26
お金の勘定では少数が出ても金にするときは端数切捨てか
なにかですからねぇ。
桁数も限られて
もう、ほとんど気にしなくていいというか。

物理の世界では考えられないことですね。

28 :デフォルトの名無しさん:03/02/24 08:21
ちょっとひろいかもw(^_^;)

29 :デフォルトの名無しさん:03/02/24 16:35
>>25
あの〜。勝手に誤差が出るのと人為的に端数処理するのでは全然違いますよ。

30 :デフォルトの名無しさん:03/02/24 17:51
とりあえずCPU486以上つかっとけ

31 :デフォルトの名無しさん:03/02/25 01:23
不動小数とは主に実数をコンピュータ上で表すための形式で
指数表記の小数点の位置が常に一定の場所であることからこう呼ばれています。

32 :デフォルトの名無しさん:03/02/25 15:41
俺はどちらかというと不動明神のほうが。

33 :デフォルトの名無しさん:03/02/25 16:23
不動明はデビルマン

34 :デフォルトの名無しさん:03/02/25 19:58
犬神明はウルフガイ

35 :デフォルトの名無しさん:03/02/26 23:09
>指数表記の小数点の位置が常に一定の場所であることからこう呼ばれています。

そのような小数点を不動点と呼びます。

36 :デフォルトの名無しさん:03/03/01 11:01
各寺に2人づつしかいませんってか?

37 :デフォルトの名無しさん:03/03/01 11:22
>>29
あの〜。桁数の有限なコンピュータで無理数を表現する以上
端数処理は避けられませんよ。


38 :デフォルトの名無しさん:03/03/01 11:40
>>37
どこに端数処理が避けられるって書いてあるって?
文章ちゃんと読めよ(藁

39 :デフォルトの名無しさん:03/03/01 13:44
Floating Point Exception age!

40 :デフォルトの名無しさん:03/03/01 13:51
小数を2進のコンピュータでやらすのは酷

41 :デフォルトの名無しさん:03/03/01 14:13
>>39
  ∧_∧
 ( ´∀`)<ふろぽ

42 :デフォルトの名無しさん:03/03/01 16:00
浮動小数っていまいち分からないんだよな。
いや、基本的な構造くらいはもちろん押さえてるんだが。

これを読めば浮動小数の神になれるみたいな本はないのか。

43 :デフォルトの名無しさん:03/03/01 16:06
仕様嫁

44 :デフォルトの名無しさん:03/03/01 16:12
イチオウシマツシテオクカ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >.__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>41

45 :デフォルトの名無しさん:03/03/03 23:31
おまえら浮動少数が死滅寸前に追い込まれたときどうするよ?

ちゃんと対策とってるかよ
死滅対策をよ
死滅後の行動とってるかよ

46 :デフォルトの名無しさん:03/03/03 23:50
浮動小数って死滅するの?

47 :デフォルトの名無しさん :03/03/03 23:56
 浮動拳の使い手ですが、文句ある?

48 :デフォルトの名無しさん:03/03/04 00:08
おまえら45が死滅寸前に追い込まれたときどうするよ?

ちゃんと対策とってるかよ
死滅対策をよ
死滅後の行動とってるかよ




別に放っておいてもいいか

49 :デフォルトの名無しさん:03/03/05 18:11
>>46
コンピュータのスペックがさらに増大し
高精度の長桁計算の需要が高まれば
10進可変長固定少数が普及すれば死滅する。
マジで

50 :デフォルトの名無しさん:03/03/07 02:49
>>49
1950年代から60年代に作られた初期の計算機は、ほとんどが10進でした。
二進など歯牙にもかけられないほどでした。
そのときにも、科学技術計算や一般の計算にも十進は必須だと思われ、
計算機の性能が上がれば、二進などは消えてなくなると言われていました。
しかし、70年代後半になり、計算機の性能が向上して消えたのは十進の方でした。
それから20年以上も二進の時代が続いたわけですが、
じつはそろそろ三進数の時代になったりしちゃったりして。
そして大論争が勃発、規格戦争に発展、二進も三進もいかなくなるという・・・

51 :デフォルトの名無しさん:03/03/07 03:01
>>50
三振方は電流の向きを解読できる方法を知らないことにはのう。

ま、コンピュータは二進でいい。ソフトウェアだけで10進演算を実現するのじゃ。
これからはソフトウェア10進の時代じゃ。

ところでニッチとサッチってニシンさんしんからきたの?

52 :デフォルトの名無しさん:03/03/08 14:29
3Dゲームの世界ではまず単精度から倍精度にするのが先だろうな。

53 :デフォルトの名無しさん:03/03/08 15:14
3Dゲームの世界じゃ固定小数が多いと思うぞ。

54 :デフォルトの名無しさん:03/03/09 02:45
>>53
おいおい、ここは時代が5年ズレてるスレじゃないぞ。

55 :デフォルトの名無しさん:03/03/09 03:25
MMX 世代なら固定小数だろうけど、SSE 世代なら浮動小数点を使うような。
DX9 で 16bit 浮動小数点が導入される辺りからしても固定小数点は下火になっているかと。

56 :デフォルトの名無しさん:03/03/09 15:07
>DX9 で 16bit 浮動小数点が導入される

それはピクセルフォーマットの話ちゃうのん。
座標系は大昔から浮動小数であろう。

57 :デフォルトの名無しさん:03/03/09 15:14
金融系で浮動小数点はご法度です。

58 :デフォルトの名無しさん:03/03/09 18:29
整数論でも浮動小数点どころか固定小数点もご法度です。

59 :デフォルトの名無しさん:03/03/09 21:26
固定小数点はすでに死語

60 :デフォルトの名無しさん:03/03/09 22:21
浮動小数点は死滅

61 :デフォルトの名無しさん:03/03/09 23:34
>>60
そういってるお前には制御系の仕事も
信号処理系の仕事も科学技術計算系の仕事も回って来まい

62 :デフォルトの名無しさん:03/03/13 12:46
What Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.sun.com/source/806-3568/ncg_goldberg.html

63 :デフォルトの名無しさん:03/03/23 00:03
物理屋なら浮動小数点知っていなければおかしいだろ

64 :デフォルトの名無しさん:03/04/06 07:46
double percomp,file_complete;
int totalfiles,numfiles,totalfiles;

percomp = ((double)(totalfiles - numfiles) + 1 - (1 - file_complete)) / (double)totalfiles;

"ERROR: float invalid operations."


65 :デフォルトの名無しさん:03/04/06 09:01
>>63
ということは物理の教科書とかにも載ってるんだ。大学でも習うの?教養課程以外で?

66 :山崎渉:03/04/17 15:51
(^^)

67 :山崎渉:03/04/20 04:14
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

68 :デフォルトの名無しさん:03/04/22 00:19
>>65
当たり前だろ。
いまどきコンピュータ無しで測定結果を処理したがる時代かっちゅ〜の。
数値計算を教われば習って当然よ。
実験してる奴は殆ど使って当たり前だろ。

天文学者はもっと膨大な桁を扱う以上、浮動小数点は避けては通れなくて当然



69 :山崎渉:03/05/28 13:22
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

70 :デフォルトの名無しさん:03/06/14 00:55
浮動小数点って誤差あるのに用途あるの?

71 :デフォルトの名無しさん:03/06/14 02:19
>>70
それは「計測器って測定誤差あるのに用途あるの?」という質問と同じだ。
誤差の評価も出来ない奴に科学技術計算のプログラムは書けん。てゆうか書くな。

72 :デフォルトの名無しさん:03/06/15 01:15
>>70
> 浮動小数点って誤差あるのに用途あるの?
↑ヴァカ発見

73 :デフォルトの名無しさん:03/06/15 12:45
>>70
ケーキ切り分けた後で重さまで比べる香具師発見

74 :デフォルトの名無しさん:03/06/15 12:52
合計1兆円なら1マソ円くらい誤差くらい許せよ >経理屋
経理屋は細かくていかんわなぁ。

75 :デフォルトの名無しさん:03/06/15 13:32
>>74
おいおい、それはいかんだろ。
トラブルのもとだぞ。裁判になる。 

76 :デフォルトの名無しさん:03/06/15 14:13
>>70は数値計算や物理をもう一回一から勉強しなおした方がいいね。
自然界に存在する誤差を知らないアホは。
自然界に存在するものをコンピュータで再現すりゃそりゃ誤差がでるだろが。

>>70は自然現象をなめとんのか。
神に逆らっているようなもんだぞ

77 :デフォルトの名無しさん:03/06/15 23:59
>>76
計測誤差と浮動小数点の丸め誤差を一緒にするなよ

78 :デフォルトの名無しさん:03/06/20 11:20
10進2進変換誤差と浮動小数点誤差を一緒にするなよ

79 :デフォルトの名無しさん:03/06/20 12:16
ゴザとムシロを一緒にすんなよ

80 :デフォルトの名無しさん:03/06/20 13:07
>>57
そうか?金銭型ってのは使わないの?

81 :デフォルトの名無しさん:03/06/20 18:33
金融関係ではどんぶり型を使って計算します。

82 :山崎 渉:03/07/15 10:44

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

83 :山崎 渉:03/07/15 14:04

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

84 :山崎 渉:03/08/02 02:51
(^^)

85 :デフォルトの名無しさん:03/08/09 10:27
>>80
多分10進型を使いこなしているCOBOLerだと思う。


86 :デフォルトの名無しさん:03/08/09 10:43
何で2ヶ月前のレスに上げてレスするのか?

多分2chを使いこなしてないリア厨だと思う。

87 :デフォルトの名無しさん:03/08/09 10:45
javaでbigdecimalクラスを使うのと
普通のintを使うのとで
一体何が違うのか教えてくれー。


88 :デフォルトの名無しさん:03/08/09 11:10
>>87
ところでおまえさんよ、BigIntegerとdoubleはしっとるよな。

ドキュメント見ればああなるほどと一発でわかるのだが。
桁数が可変になってdouble型以上の高精度、多倍長計算ができる
程度の違いだよ。BigDecimalは内部で10進数で値を
保持しているようだから計算はdolubleより遅くなるがね。
しかも三角関数などの初頭関数が用意されていない。
自作するか誰かが作ったライブラリをとってきて使うしかない。
double型の制度内に収まる値なら一旦doubleに変換して計算が終わったら
BigDecimalに戻すという手法もあり。

89 :デフォルトの名無しさん:03/08/09 23:08
単精度値全体を見渡すと、250個のうち1個はNaN値なんだよな。もったいない話だ。
せっかくだからNaN値の面白い使い方でも教えてくれや。

※ むかつくCGIにシグナリングNaNを入力してアボートさせるなんてのはナシよ。


90 :デフォルトの名無しさん:03/08/10 01:53
整数型三角関数
http://www.gen-ta.net/underwater/

91 :デフォルトの名無しさん:03/08/10 02:14
>>89
0÷0はNaNです。

92 :デフォルトの名無しさん:03/08/10 02:16
文系出身のオレにはこの辺はチンプンカンプンだ。。。


93 :デフォルトの名無しさん:03/08/10 08:20
理系出身のオレにもチンプンカンプンだ。。。

94 :デフォルトの名無しさん:03/08/10 08:22
>>89
NaN==NaN はfalseです。

95 :デフォルトの名無しさん:03/08/10 08:45
>>90
オレにも出来た。整数型三角関数。
int intsin(int x){
 return (int)sin((double)x);
}

96 :デフォルトの名無しさん:03/08/10 10:07
これでいいんじゃないか?
#define intsin( 0*(

97 :デフォルトの名無しさん:03/08/10 12:16
-1〜1の範囲から出られない三角関数なんぞ俺の人生には不要だ。

98 :デフォルトの名無しさん:03/08/10 15:53
>97
tan, cot,sec,cosec しか使わないということですか。


99 :デフォルトの名無しさん:03/08/10 16:09
>>98
しか?

100 :デフォルトの名無しさん:03/08/10 17:51
浮動小数点が扱えない(整数型のみ)システムで、
浮動小数点を計算したい場合はどうやるのでつか?

101 :デフォルトの名無しさん:03/08/10 17:56
>100
浮動小数点演算ライブラリをリンクする。


102 :デフォルトの名無しさん:03/08/10 18:11
昔はZ80用浮動小数点ライブラリなんてのもあったな。

103 :デフォルトの名無しさん:03/08/10 18:57
>>89
なんじゃそりゃ。ぱっと見ただけではまったく意味がわからなかったぞ。
ちゃんと説明せいや。
32bits表現可能な値のうち250分の1
( 0x7f800001 〜 0x7fffffff, 0xff800001 〜 0xffffffff)はNaNで表現されるとい
解説をいれてくれや。

メモリもマシンパフォーマンスも向上した時代に
いまどきそんなもんを有効利用しようとしてどうする。

104 :デフォルトの名無しさん:03/08/10 19:21
>>100
素人が考えた手法です。この手法は、0除算対策には対応していません。

数値を表すクラスを継承した分数クラスを定義する。
privateなフィールド(属性)には整数配列型分母フィールド、整数配列型分子フィールド
を定義する。

コンストラクタは、 分数(long 分子, long 分母)とし、
内部ではこの整数型の数値の一桁一桁の数字を
分割し桁数と同じ長さの整数型配列の中に入れる。

long型で返すget分母(), get分子()メソッドを定義する。

そのクラスに四則演算としてadd(), subtract(), multiply(), divide()メソッド(操作)を用意する。
それぞれのメソッドの戻り値の型は「分数クラス」のスーパークラスである「数値」クラス。
それぞれのメソッドの戻り値は、約分できる値ならできる限り約分された結果をかえす。

割り算など、divide()メソッド内では、
約分などの正規化で割り切れる値以外は実際には割らない。
内部ではあくまで分数で値を保持する。

たとえば、ある分数クラスの二つのオブジェクト(x, y)の中身が a/b、Y c/d であるとき、

数値 x = new 分数(a, b); z = x.divide(y) と計算すると
Z.get分母()で得た値は b * c
Z.get分子()で得た値は a * d となる。

また、数値を文字列表現で返すtoString()メソッドを定義する。
このメソッド内で割り算のアルゴリズムが発動し、
小数点の文字列表現を返す。

105 :デフォルトの名無しさん:03/08/10 19:30
>>100
浮動小数点の扱えるシステムを繋ぐ

106 :デフォルトの名無しさん:03/08/10 19:35
どうしてスレタイに誰もつっこんでないんだよー。
浮動小数じゃなくて浮動小数点数だろー。


107 :デフォルトの名無しさん:03/08/10 19:40
a = x/y + z / w

となる式でaを使った式を計算するとき、どうしても誤差を最小限にしたいとき

自動的に ( x * w + y * z ) y * w と通分してくれるフレームワークが欲しい。

b = x / y;
c = b * y;
という式があったとき、とんでもない誤差を減らすために自動的にyを消去し、
c = x と代入してくれるフレームワークが欲しい。

108 :デフォルトの名無しさん:03/08/10 19:48
>>104
なるほどー。なかなかいいね。
加減算でも内部で乗除算が発生するところが少々アレだが。

109 :デフォルトの名無しさん:03/08/10 20:10
>107
前者は、データ長を超えないためにわざとそう書く場合も有るから難しいね。
後者は、アルゴリズムを練る時点で解消されている事を祈る。

110 :デフォルトの名無しさん:03/08/10 20:11
マジレスすると大きな数はどう表現する?
通分して足し算してると、あっという間に整数型で表現できなくなる。
BigNum使うと、Rationalライブラリになるけど。


111 :デフォルトの名無しさん:03/08/10 20:13
>>107
そのくらいだったらコンパイラが対応してない?
……いや、根拠も何もないけどさ。

112 :デフォルトの名無しさん:03/08/10 20:20
時計チェック

113 :デフォルトの名無しさん:03/08/10 20:24
>>111
念のために言っておくと、そんなことする商用コンパイラは無いよ。
(世界の果てにはあるかもしれないけど。)
あえて切り捨て演算を行いたい場合もあるし。

114 :デフォルトの名無しさん:03/08/10 20:31
>>108
あらかじめ通分しとけばいいんじゃない?
ある程度は減るんじゃないかと。

115 :デフォルトの名無しさん:03/08/10 20:34
>>107
> b = x / y;
> c = b * y;
> という式があったとき、とんでもない誤差を減らすために自動的にyを消去し、
> c = x と代入してくれるフレームワークが欲しい。

x と y がどっちも 0.0 だったら、c はどうあってほしい?
>>91
でも読んで考えてみてくれ。
y が無限大だった場合もワケワカメなことになりそうだ。


116 :デフォルトの名無しさん:03/08/10 21:09
>>114
そうか。104と107にはそういう関連が有ったのか。納得。
速度はさておき。
内部では倍長で扱えば、破綻の無いシステムになりそう。

117 :デフォルトの名無しさん:03/08/10 21:48
スマンが最も自分が得意とするJavaで差せてもらいますわい
これまた思いつきですわい

>>110
Javaの java.lang.BigInteger のように配列で値を保持するか.
文字列で値を保持するか...

BigIntegerは10進で最大20憶桁ほど扱えるらしい。
が、桁数が大きくなればなるほどとんでもない計算量になりそうだ。


>>115

そういうときはNaNが発生したとき(Double.isNaN(x)がtrueのとき)
その場で

throw new ArithmeticException(); .....
都合に合わせてtry-catchで料理。


118 :デフォルトの名無しさん:03/08/10 21:50
>>104
>
> long型で返すget分母(), get分子()メソッドを定義する。
これもtoString()のようにString()で返すか
java.lang.BigIntegerで返すんだった。longは御法度。

119 :デフォルトの名無しさん:03/08/10 22:36
>>117
分子/分母の形式で表現されたその数を10進数で表示/印刷するには
どうすればいいですか?


120 :デフォルトの名無しさん:03/08/10 22:53
数式処理システム使えば?
mathematica, maple など

121 :デフォルトの名無しさん:03/08/10 23:12
>>119
一番単純なのはこんなやつ。
とりあえず分子、分母の型はこう変更しておこう。
import java.math.BigInteger;も忘れずにつける。

 private BigInteger 分子;
 private BigInteger 分母;

 String show(){
  return this.分子.toString() + " / " + this.分母.toString();
 }

ほんとうはtoString()の仕様をこうすべきかな。
で、以前に定義したtoString()の仕様はこれにし、
名前もtoBigDecimalに変更しよう。

 BigDecimal toBigDecimal(int scale, int roundingMode){
  return new BigDecimal(分子).divide(new BigDecimal(分母), scale, roundingMode);  
 }

122 :121:03/08/10 23:21
>>119
よくみたら勘違いしていた。
上で定義したtoBigDecimal()を使って

数値 x = new 分数(BigInteger.valueOf(2), BigInteger.valueOf(3))

System.out.println(
 x.toBigDecimal(1000, BigDecimal.ROUND_HALF_EVEN).toString()
);

多分、0.666666666666666... (6が千個)
という文字列が返ってくるだろう。

こんなメソッドを定義してもいいが無理して作らなくていいかもしれない。
public String dividedValue(int scale, int roundingMode){
 return toBigDecimal(scale, roundingMode).toString();
}

123 :デフォルトの名無しさん:03/08/11 02:17
このスレは有理数(分数)クラスを語るスレとなりました。
>100
からずいぶん遠いところまで来てしまったな。

ところでπや三角関数などの無理数はどうやってあらわす?
この勢いで無限級数クラスまで突き進んでくれ。

※ 物理屋がオブジェクト指向に出会うと、たいがい複素数クラスとか考えるよな。


124 :デフォルトの名無しさん:03/08/11 18:22
>>123
> ところでπや三角関数などの無理数はどうやってあらわす?
> この勢いで無限級数クラスまで突き進んでくれ。
パイには多倍長型対応arctan()などを作るのだよ。

コンストラクタに桁数、機械epsilonなどの精度を指定するのだ。

> ※ 物理屋がオブジェクト指向に出会うと、たいがい複素数クラスとか考えるよな。

もちろん複素数クラス、行列クラス、数値積分クラス、数値微分クラスくらいは
すでに他の言語で存在してる。しかしオブジェクト指向に弱いライブラリの巣窟。



125 :デフォルトの名無しさん:03/08/11 23:31
いまひとつ理解できてないんだけど、
無理数は有理数に近似するしか無いんじゃないの?

126 :125:03/08/11 23:32
あ、無限級数クラスか・・・失礼しました。

127 :125:03/08/11 23:36
無知ついでに言わせてもらうと、
他人の作ったクラスをソースを見ずに使う勇気はありますか?

私はドキュメントの付いた古風な関数の方が安心できるなあ。

128 :デフォルトの名無しさん:03/08/12 00:06
無理数は近似でかまわんが、1/3を正確に記述出来るのはいいな。<分数クラス

129 :デフォルトの名無しさん:03/08/12 00:52
>>127
プログラムが多くの人によって実際に使われ、テストされれば
ソースを水に使う気になれる。

そうでなくともJUnitでテストプログラムを使ってテストされている
ものならまあ使う気にもなれる。

最初はまずどんなものはテストするものだが。


130 :デフォルトの名無しさん:03/08/12 10:24
>>125
無理数は、平方根クラスや、指数クラスで代用できるかも。

public abstract class 無理数 extends 数値 {
}

public final class 平方根 extends 無理数 {
 private BigInteger value;
 /** この部分は private 数値 value; のほうが拡張性が高いかも。

 public 平方根(BigInteger valuie){
  this.value = value;
 }

 public BigDecimal toBigDecimal(int scale, int roundingMode, BigDecimal eps){
  return sqrt(scale, roundingMode, eps, new BigDecimal(value));
 }

 private BigDecimal sqrt(int scale, int roundingMode, BigDecimal eps, BigDecimal value){
  //多倍長平方根のアルゴリズムここに実装
  //奥村晴彦の「C言語による最新アルゴリズム辞典」
  //「Javaによるアルゴリズム辞典」でなんとか作れるでしょ。
 }
}

131 :デフォルトの名無しさん:03/08/12 15:07
無理数の定義(一部)はこれでどうよ

//分数クラスを再定義し有理数クラスを作成
public class 有理数 extends 数値 {}
public class 分数 extends 有理数 {}

public final class 指数関数 extends 無理数 {
 private 有理数 base; //基数部
 private 有理数 exponent; //指数部

 public 指数関数(有理数 base, 有理数 exponent){
  this.value = value;
 }

 public BigDecimal toBigDecimal(int scale, int roundingMode, BigDecimal eps){
  return sqrt(scale, roundingMode, eps,
   base.toBigDecimal(), exponent.toBigDecimal() );
 }

 private BigDecimal exp(int scale, int roundingMode, BigDecimal eps,
   BigDecimal base, BigDecimal exponent){
  //多倍長指数関数のアルゴリズムここに実装
 }
}


132 :デフォルトの名無しさん:03/08/12 22:08
車輪の再発明もいいけどさ。
ttp://boost.cppll.jp/HEAD/libs/rational/


133 :デフォルトの名無しさん:03/08/12 22:16
http://boost.cppll.jp/HEAD/libs/rational/rational.html#Exceptions
>有理数クラスでは、分母がゼロとなることは決してない。(本ライブラリ
>では、NaN や無限大の表現形式としても、分母がゼロになることはない)
>そのため、分母の値が0となる場合には、boost::bad_rational 例外
>(これは、std::domain_error のサブクラスである)をスルーする。

スルーするって変じゃない?
スローじゃないの?
コールスロー

134 :デフォルトの名無しさん:03/08/12 22:16
java で定番のRationalクラスってある?
ttp://www.google.com/search?hl=ja&ie=UTF-8&oe=UTF-8&q=java+%22class+Rational%22


135 :デフォルトの名無しさん:03/08/13 09:49
>>134
そこからみてみたんだがオブジェクト指向としてはひどいものばかりだ。
アルゴリズムとしてはかなりのものだとは思うが。

http://www.math.technion.ac.il/~rl/java/kaleido/Rational.html
これはメソッドが全て無意味にpackage private担っているところが
痛すぎる。

http://www.daimi.au.dk/dSoegOpt/java/dSoegOpt/Real.html
これはオブジェクトのカプセル化がなされていなさ過ぎる。
インスタンスフィールドをpublicにするなんてひどすぎる。
privateをつけてgetterメソッドをつけるべきなのに、この仕様は
あまりにも危険すぎる。これは設計者がC言語で構造体を使いこ
なしていた名残なのか?

clone()メソッドもオーバーライドされていない。
Cloneableインターフェース、Comparableインターフェースが実装されていない。

greater()やless()なんというメソッドが用意されているのが気になる。
compareTo()メソッドがあれは必要性がないと思うだがちょっとした利便性の
ためにわざわざ作ったのか?

しかもRationalクラスに不変性が保たれていない。
クラスがfinal宣言されていない。setter機能が禁止されていない(フィールドがpublic)。


136 :デフォルトの名無しさん:03/08/13 14:02
Java 使いが多そうなんで オブジェクト指向寄りの話題を振ってみるが、
有理数クラスの hashCode() はどう実装したもんでしょうかねぇ。
やはり戻り値は (分子).hashCode() ^ (分母).hashCode() なんてとこでしょうか。
でも 1/3 と 2/6 の hashCode() はどちらも同じ戻り値を返したい気もする。

137 :デフォルトの名無しさん:03/08/13 22:01
>>136
オブジェクト指向とはいえこれはオブジェクト指向とは別の異なる知識が
必要そうだ。ソースコードを拝見してみたが不覚にも修行が足りず解読中。

Object
 public native int hashCode();

Boolean
 public int hashCode() {
  return value ? 1231 : 1237;
 }

String
 public int hashCode() {
  int h = hash;
  if (h == 0) {
   int off = offset;
   char val[] = value;
   int len = count;

   for (int i = 0; i < len; i++) {
    h = 31*h + val[off++];
   }
   hash = h;
  }
  return h;
 }

Character
 public int hashCode() {
  return (int)value;
 }

138 :デフォルトの名無しさん:03/08/13 22:02
Byte
 public int hashCode() {
  return (int)value;
 }

Short
 public int hashCode() {
  return (int)value;
 }

Integer
 public int hashCode() {
  return value;
 }

Long
 public int hashCode() {
  return (int)(value ^ (value >>> 32));
 }

139 :デフォルトの名無しさん:03/08/13 22:05

Float
 public int hashCode() {
  return floatToIntBits(value);
 }

Double
 public int hashCode() {
  long bits = doubleToLongBits(value);
  return (int)(bits ^ (bits >>> 32));
 }

BigInteger
 public int hashCode() {
  int hashCode = 0;

  for (int i=0; i<mag.length; i++)
   hashCode = (int)(31*hashCode + (mag[i] & LONG_MASK));

  return hashCode * signum;
 }

BigDecimal
 public int hashCode() {
  return 31*intVal.hashCode() + scale;
 }

//Object, Boolean, Character, String, Byte, Short, Integer,
//Long, Float, Double, BigInteger のhashcode()を見てみたがほとんどさっぱり。
BigDecimal

140 :デフォルトの名無しさん:03/08/13 23:09
>>136
どうせ「既約にする」というメソッドが必要になるから
内部でそれを呼んで既約にした結果に対して
適当にごにょごにょすればいいんちゃうん

141 :デフォルトの名無しさん:03/08/13 23:40
hashcode()はequals()メソッドやclone()メソッド、compareTo()メソッドの
オーバーライドで精一杯です。


http://www.gimlay.org/~javafaq/S038.html#S038-05
よんでhashcode()のことをしらべているけど20億種類もの範囲を超える
オブジェクトのパターンをhashcodeで表現するにはどうすればいい?

BigIntegerだけでも、10の20乗種類もの数値パターンを作れてしまうような。
ていうか、漏れがhashcode()の取り扱いに詳しくないだけ?

上のサイト見てると、hashcode()は検索を早くするためだけにあるような。

142 :141:03/08/13 23:43
ん? よく見たら
オブジェクト o と p について、o.equals(p) ならば、
o.hashCode() == p.hashCode() でなければなりません。

逆に、o.hashCode() == p.hashCode()
であっても、o.equals(p)とは限りません。

と書いてあった。String型#hashcode()を参考にして作れと?

143 :デフォルトの名無しさん:03/08/13 23:43
>>141
HashはHashTableのためだけにあるんちゃうのか?

144 :デフォルトの名無しさん:03/08/13 23:48
>>143
> >>141
> HashはHashTableのためだけにあるんちゃうのか?

そのサイトによると
>ハッシュコードはオブジェクトの検索を高速に行うために使われます。

ということらしいよ。

あまりこのハッシュを使った凝ったプログラミングに時間を費やすことは避けたい。

145 :デフォルトの名無しさん:03/08/14 00:06
>>144
お前アホだろ。

>ハッシュコードはオブジェクトの検索を高速に行うために使われます。

に書いてある意味もわかってないようだし、

>オブジェクト o と p について、o.equals(p) ならば、
>o.hashCode() == p.hashCode() でなければなりません。
>
>逆に、o.hashCode() == p.hashCode()
>であっても、o.equals(p)とは限りません。

の意味もわかってないようだし。そもそも Hashtable, HashMap とは何かもわかってないみたいだし。

146 :デフォルトの名無しさん:03/08/14 00:08
単純にhashcodeの時だけ約分すやいい話じゃないの?

147 :146:03/08/14 00:09
hash値の一意性さえ保っておけばいいんだから、
方針次第では約分する必要もない。

148 :146:03/08/14 00:16
equalにも影響あるのか
約分と通分の結果はキャッシュしとくとか。

149 :デフォルトの名無しさん:03/08/14 00:34
>>136
> でも 1/3 と 2/6 の hashCode() はどちらも同じ戻り値を返したい気もする。
あらかじめ約分されてから代入されることを考慮するなら
2/6も1/3に変わってその問題もどうにか解決すると思われ。

150 :デフォルトの名無しさん:03/08/14 00:40
そういや1より大きな数のとりあつかいについてぜんぜん考えてなかった。

151 :デフォルトの名無しさん:03/08/14 00:57
約分すると整数になる場合はn/1
でいいんじゃん?



152 :山崎 渉:03/08/15 15:30
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

153 :デフォルトの名無しさん:03/08/16 10:15
おwari?

154 :デフォルトの名無しさん:03/08/17 09:27
いきなり初歩的な質問なんですが、IEEEの浮動小数点形式って、
「ゼロ」に符号があるみたいなんですけど、これって使い分けというか、
両方とも使う必要があるんでしょうか?

それとも、結果的に2つできてしまっただけで、通常は片方を使う
のでしょうか?

155 :直リン:03/08/17 09:29
http://homepage.mac.com/maki170001/

156 :>>2ちゃんねらーの皆さん:03/08/17 09:31
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)

(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)


157 :デフォルトの名無しさん:03/08/17 11:32
1 / +0 => +∞
1 / -0 => -∞


158 :デフォルトの名無しさん:03/08/17 20:05
>>145
いやわかってるとも。
それよりHashTableやHashMapはよくつかってるしServletでも使ってるし。
それよりもハッシュを理解してもハッシュ関数のことをよく理解していなかったことは確か。

ひとまず、コンストラクタを生成した時点で約分を開始し、
約分した値は全て最小絶対値となるようにし

hashcode()は分子、分母を割った結果のBigDecimal型のhashcodeをとるということで。

public int hashcode(){
 new BigDecimal(分子).divide(
  new BigDecimal(分母),
   Integer.MAX_VALUE,
   BigDecimal.ROUND_HALF_EVEN
  ).hashcode();
}

しかしこれはInteger.MAX_VALUEが重たいな。

159 :デフォルトの名無しさん:03/08/17 20:59
>>158
未だに効果的なハッシュ関数というものについては全然わかってないみたいだな。

160 :154:03/08/18 00:03
>>157
おお、なるほど! そういう特別な場合のための意味づけなんですか・・・

通常の数だけを扱う場合は、プラスゼロだけにまとめてしまっても大丈夫?

161 :デフォルトの名無しさん:03/08/18 10:50
BigIntegerで最も大きな素数の組み合わせでできた分数をhashCode()に
変換する方法を考えないといけないぞう。約分できる分数は無視。

でかい数は約分するだけでも一苦労。
BigIntegerの最大値の素数の平方を求め、そこから約分できるかどうかを判定する。
とんでもない時間がかかりそうだわい。


162 :デフォルトの名無しさん:03/08/18 20:40
約分できるかどうかなんて
当然ユークリッドの互除法を使ってやると思うけど。
そもそも、有理数を分子・分母の組で表す場合、
ユークリッドの互除法使って常に規約にしない?


163 :デフォルトの名無しさん:03/08/18 22:20
すこしスレタイ寄りの話題に戻すか。
>>100
>浮動小数点が扱えない(整数型のみ)システムで、
>浮動小数点を計算したい場合はどうやるのでつか?

パフォーマンスを無視すれば、厨学生でもIEEE規格の加減乗除ぐらい
アセンブラの整数命令程度の道具で作れるでしょ。乗算が一番簡単だったりしてね。
MIDP でケータイアプリなんか作ってるとこはこの辺どうしてるのかねぇ。

この辺のライブラリを仕事で作ったことのあるプログラマはいる?
やはり十年前のバグ付きペンティアムみたいに、巨大なテーブル引いて
高速除算したりするのかしら。

残りの超越関数は ttp://www.ibiblio.org/pub/packages/development/libraries/ の
fdlibm のソースとか役に立つでしょう。JDK もこれ使ってるらしい。


164 :デフォルトの名無しさん:03/08/18 23:07
>>162
しかし、巨大な素数がある場合、それが計算速度の弊害になるて。
巨大な素数を求めるだけでも時間がかかる。
あらかじめ素数リストをtable lookupしてしまえばいいのだが。


165 :デフォルトの名無しさん:03/08/18 23:24
>>164
ユークリッドの互除法についてわかってないなら発言しない方がいいよ。

166 :デフォルトの名無しさん:03/08/18 23:25
オブジェクト指向上、上のように「有理数」が「数値」を継承するって、どうよ?
いや、数学的に、集合的に、正論だってことは解るけどさ、
ただ Java で java.lang.Number をインプリメントしたいだけっていうんなら文句はないけどさ、
なんかね、「円」が「楕円」を継承しているような気味悪さがあるのよ。

※ 他にも「指数関数」が「無理数」を継承するとかあったけど、これは見なかったことにしよう。


167 :デフォルトの名無しさん:03/08/18 23:33
>>165
ハゲ! 貴様がわかっていないのだろうが!

168 :デフォルトの名無しさん:03/08/18 23:45
>>165
お前はユークリッドの互除法を使う前の段階の素数を短時間で求める方法を
わかってないみたいだからそれ以上発言しないほうがいいよ。

169 :デフォルトの名無しさん:03/08/18 23:49
俺の知ってるユークリッドの互除法は素数を必要としないのだが、
お前の知っているユークリッドの互除法とは別物らしい。
説明してもらえないか。


170 :デフォルトの名無しさん:03/08/18 23:54
>>169
生意気な。
素数を使わずに順次にインクリメントしてやっていられるかっての。
高速化を考えろっての

171 :デフォルトの名無しさん:03/08/18 23:56
何だ釣りか。
黙ってろ、ちんかす。


172 :デフォルトの名無しさん:03/08/18 23:57
>>169はループを21億回転させるつもりらしい。


173 :デフォルトの名無しさん:03/08/19 00:01
hashCodeも考える必要なし

174 :デフォルトの名無しさん:03/08/19 00:04
では二人にそれぞれの方法で分数
798 / 5005
を既約化することを命ず。
決着が付かなければ数学版でプリーズ。


175 :デフォルトの名無しさん:03/08/19 00:07
>>170,172
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Euclid.html
釣られてみた

176 :デフォルトの名無しさん:03/08/19 00:12
もしかして、ユークリッドの互除法と、エラトステネスのふるいを
混同している人がいたりするのではあるまいか?

177 :デフォルトの名無しさん:03/08/19 00:15
>>172
知らないことがらについて、発言してはいかんよ。たぶん、あなたは激しく
間違っている。

178 :デフォルトの名無しさん:03/08/19 00:18
ただ今スレ違いな方向に進行中

179 :デフォルトの名無しさん:03/08/19 00:21
素数を使って高速化するユークリッドの互除法って、
いったいどういう方法なんだろう?

180 :165:03/08/19 00:26
>>167,168,170
アホばっかりでワラタ

181 :デフォルトの名無しさん:03/08/19 00:31
5005 ÷ 798 = 6 あまり 217
798 ÷ 217 = 3 あまり 147
217 ÷ 147 = 1 あまり 70
147 ÷ 70 = 2 あまり 7
70 ÷ 7 = 10 あまり 0

よって 798 / 5005 = 114 / 715


182 :デフォルトの名無しさん:03/08/19 00:32
でてこい>ちんかす


183 :デフォルトの名無しさん:03/08/19 00:33
ねえねえ、素数を使うとどこが高速化されるの?

184 :デフォルトの名無しさん:03/08/19 00:40
>>183
強いていえば、2つの数のうちどちらかが素数だったときに
割り算をいくらか省略できる可能性があるくらいかな。

やはり167,168,170,172は真性の...

185 :176:03/08/19 00:52
>>184
実のところ、メモリ上に置かれた素数のテーブルを毎回検索する時間のほうが、
CPU内部で完結する整数の割り算より桁外れに時間がかかりそうな気がする。

で、エラトステネスのふるいと混同しているのかなと思ったけど、そもそも、
素数の表を作るのがエラトステネスのふるいの目的なので、現在作成中の
表を見れば、次のループの増分とすべき素数は見つかるから、たぶん
これと混同したわけでもなさそう・・・ はて?

結局、おそらくは、素因数分解をしようということなんだろうけど、約分は、
最大公約数を見つければいいのであって、素因数分解までする必要はない。

素因数分解は桁数が多いと確かに大仕事だけど、最大公約数を見つけるのは、
それに比べて極めて簡単だ、というのがユークリッドの互除法の「威力」
なんですけどね。 なんだかな。

186 :184:03/08/19 00:59
>>185
御意。

というわけで話は>>162に戻ると。

187 :デフォルトの名無しさん:03/08/19 01:10
有理数より先に、整数を極めるのが得策。

188 :デフォルトの名無しさん:03/08/19 11:29
hashCode()は分子分母のGCMで決定

189 :デフォルトの名無しさん:03/08/19 11:50
hashは
分子.gcm(分母) % (BigIntegerの最大素数)

190 :デフォルトの名無しさん:03/08/19 17:22
>>166
これでどう
class 数
class 実数 extends 数
class 複素数 extends 数

class 有理数 extends 実数
class 無理数 extends 実数


191 :デフォルトの名無しさん:03/08/19 23:20
>>190
数学的に考えると、実数は複素数を継承すべきかな?
でも複素数は実数の集約になるんだよな。C++でこんな循環宣言できる?

数学者に集合と継承の違いを説明できるプログラマ求む。


192 :デフォルトの名無しさん:03/08/19 23:30
>>188,189
1/2 と 5/10 の hashCode が違う
5/10 と 5/15 の hashCode が同じ
だがそれでいいのか?

分子/gcm(分子, 分母) ^ 分母/gcm(分子, 分母) あたりだろ。

193 :デフォルトの名無しさん:03/08/20 07:01
maximaのソースとか参考になるんじゃない?
hashは知らんけど。

194 :デフォルトの名無しさん:03/08/20 09:34
>>192
> >>188,189
> 1/2 と 5/10 の hashCode が違う
に関してだけ一言。
有理数クラスに不変性を持たせる
(
 ●setterメソッドといったコンストラクタ以外でオブジェクトを変更できる
  メソッドを使用禁止にする。
 ●クラス継承を禁止にする。
 ●フィールドを全てprivateにする
)
ことを前提として、
5/10はコンストラクタで宣言できるが
実際には存在しない。コンストラクタを呼び出した時点で
約分が開始され約分された値が常にフィールドに入る。


ということで1/2と5/10との違いを意識する必要はなかれ

195 :デフォルトの名無しさん:03/08/20 09:35
>>191
C++でもJavaでもオブジェクト指向言語であれば
デザインパターンを使ってどうにかなりそうな気がする。

Compositeパターンはどうだろう?

196 :デフォルトの名無しさん:03/08/20 16:19
「FOMA4機種、電卓で再度のバグ」
ttp://headlines.yahoo.co.jp/hl?a=20030820-00000024-zdn-sci

どうすれば複数メーカーでこんな阿呆なバグを作りこめて、検査を通過できるのか、
誰か説明してくれよ。想像つかねーよ。
症状が妙に10進数に依存してるので、固定小数っぽい気もするが。
やっぱ固定小数はダメダメだな。


197 :デフォルトの名無しさん:03/08/20 22:50
>>192
なんで排他的論理和をとる?

^だったらBigIntegerではxor()メソッドで
分子.divide(分子.gcm(分母)).xor(分母.divide(分子.gcm(分母)))

198 :デフォルトの名無しさん:03/08/21 00:06
>>197
排他的論理和がいやなら

最大公約数 = gcm(分子, 分母)
分子' = 分子/最大公約数
分母' = 分母/最大公約数

のとき 分子'*適当な素数1 + 分母'*適当な素数2 なんかでもいいよ。
ただ素数の取り方によってはハッシュコードがばらけないので注意。

199 :デフォルトの名無しさん:03/08/21 12:56
>>198
'を使っているプログラミング言語は?

51 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)