Skip to content

Commit d95adfb

Browse files
Merge pull request #5 from rurema/update-generated-documents
Update generated documents
2 parents ff98303 + 49d7a61 commit d95adfb

File tree

1,529 files changed

+6417
-3557
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,529 files changed

+6417
-3557
lines changed

db/db-3.0/class/-numeric

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,116 @@ class Numeric
203203
end
204204
end
205205
//}
206+
207+
208+
===[a:division] 除法と商・剰余
209+
210+
Numeric には除法(除算;割り算;division)に関わるメソッドがいくつもありますが、
211+
除法にはいくつか種類があるため、全貌が把握しづらくなっています。
212+
213+
この節では除法の種類を説明し、各メソッドがどの除法に基づいているのかが分かるようにします。
214+
215+
まず用語ですが、割られる数を被除数(dividend)、割る数を除数(divisor)、
216+
割った結果を商(quotient)と言います。
217+
218+
除法は大きく分けて二つあります。
219+
220+
そのうちの一つを、ここでは「普通の除法」と呼ぶことにします。
221+
222+
普通の除法は、被除数を x、除数を y、商を q としたとき、x == q×y となるよう定義された除法です。
223+
7 割る 2 を 3.5 とする除法は普通の除法です。
224+
225+
普通の除法における商をここでは「普通の商」と呼ぶことにしましょう。
226+
227+
もう一つの除法は、商が必ず整数になるよう定義されるもので、これを「整除法」と言います。
228+
7 割る 2 を 3 余り 1 とする除法は整除法です。
229+
230+
整除法における商をとくに「整商」と言います。
231+
232+
整除法では、被除数を x、除数を y、商を q としたとき、x と q×y が一致する(つまり割り切れる)とは限りません。
233+
234+
その差 x − q×y を剰余(余り;remainder)と言います。
235+
整除法は商と剰余がセットで決まる除法なので「剰余付き除法」とも呼ばれます。
236+
237+
しばしば「整除法は整数の世界でしか成り立たない」と誤解されていますが、
238+
2.5 m の紐から 0.75 m の紐が何本取れて何 m の半端が出るか、という問題を
239+
考えれば、被除数・除数が整数でなくてもよいことが分かります。
240+
241+
//emlist[例: Float の世界の整商と剰余][ruby]{
242+
p 2.5.divmod(0.75) # => [3, 0.25]
243+
# 2.5 m の紐から 0.75 m の紐が 3 本取れて 0.25 m 余る
244+
//}
245+
246+
ただし、複素数の世界では整商・剰余は考えないので、Complex に divmod など
247+
のメソッドは定義されていません。
248+
249+
以下では、まず普通の除法に基づくメソッドについて述べます。
250+
251+
普通の商を得るメソッドは [[m:Numeric#quo]] です。
252+
quo の返り値のクラスは、被除数・除数のクラスによって異なります。
253+
例えば、被除数・除数の一方が Integer、他方が Float なら返り値は Float です。
254+
255+
普通の商を得るメソッドには、[[m:Numeric#fdiv]] もあります。
256+
これは商を Float で返します(被除数・除数の一方が Complex のときは
257+
Complex を返します)。
258+
259+
整数同士の除法の場合、quo は厳密値を Rational で返しますが、
260+
fdiv では丸め誤差が生じうることに注意してください。
261+
262+
次に整除法に基づくメソッドについて述べます。
263+
264+
重要なことは、整除法の定義(言い換えれば整商・剰余の定義)がいくつもある、ということです。
265+
266+
しかし、どの定義にも共通していることが二つあります。
267+
268+
それは、被除数を x、除数を y としたときの整商を q、剰余を r とすると、第一に
269+
270+
x == y * q + r (ただし q は整数)
271+
272+
が成り立つということです。
273+
第二に、剰余 r は「半端」ですから、r の絶対値は y の絶対値より小さくなくては
274+
ならないということです。
275+
276+
この二つを満たす整商・剰余の定義は何通りもありますが、
277+
Ruby では、剰余に関して二通りの定義を採用し、
278+
[[m:Numeric#modulo]] メソッドと [[m:Numeric#remainder]] メソッドとして
279+
実装されています。
280+
281+
modulo は、
282+
283+
* y > 0 のとき 0 <= r < y
284+
* y < 0 のとき y < r <= 0
285+
286+
となるように定められた剰余です。
287+
定義からすぐ分かるとおり、剰余 r の符号は除数 y の符号と一致します。
288+
289+
modulo の別名は % で、普通はメソッド呼び出しの形ではなく二項演算子の
290+
形で用います。
291+
292+
modulo に対応する整商は [[m:Numeric#div]] です。
293+
これは、普通の商を [[m:Numeric#floor]] で整数化したものと
294+
一致します。
295+
296+
さきほどの例で出てきた [[m:Numeric#divmod]] は、
297+
div と modulo の値を一度に配列で返すメソッドです。
298+
299+
一方、remainder は
300+
301+
* x > 0 のとき 0 <= r < |y|
302+
* x < 0 のとき -|y| < r <= 0
303+
304+
となるように定められた剰余です。
305+
定義からすぐ分かるとおり、剰余 r の符号は被除数 x の符号と一致します。
306+
307+
これに対応する整商を得るメソッドはありませんが、
308+
x.quo(y).truncate で得ることができます。
309+
310+
x と y がともに正のときと、ともに負のとき、modulo と remainder は
311+
一致します。
312+
313+
商を得るメソッドには [[m:Numeric#/]] もあります。
314+
普通はメソッド呼び出しの形ではなく、二項演算子として用います。
315+
316+
これは被除数・除数のクラスによって挙動が異なります。例えば Integer 同士なら div と同じ、Integer や Rational と Float なら quo と同じ、といった具合です。
317+
318+
被除数のクラスの / メソッドの説明をご覧ください。

db/db-3.0/class/-string-i-o

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
type=class
2-
superclass=Data
3-
included=
2+
superclass=Object
3+
included=Enumerable
44
extended=
55
dynamically_included=
66
dynamically_extended=

db/db-3.0/method/-numeric/i.=25._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=%,modulo
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:644
4+
source_location=refm/api/src/_builtin/Numeric:771
55

66
--- modulo(other) -> Numeric
77
--- %(other) -> Numeric

db/db-3.0/method/-numeric/i.=2b=40._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=+@
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:362
4+
source_location=refm/api/src/_builtin/Numeric:489
55

66
--- +@ -> self
77

db/db-3.0/method/-numeric/i.=2d=40._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=-@
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:375
4+
source_location=refm/api/src/_builtin/Numeric:502
55

66
--- -@ -> Numeric
77

db/db-3.0/method/-numeric/i.=3c=3d=3e._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=<=>
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:891
4+
source_location=refm/api/src/_builtin/Numeric:1018
55

66
--- <=>(other) -> -1 | 0 | 1 | nil
77

db/db-3.0/method/-numeric/i.abs._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=abs,magnitude
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:386
4+
source_location=refm/api/src/_builtin/Numeric:513
55

66
--- abs -> Numeric
77
--- magnitude -> Numeric

db/db-3.0/method/-numeric/i.abs2._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=abs2
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:925
4+
source_location=refm/api/src/_builtin/Numeric:1052
55

66
--- abs2 -> Numeric
77

db/db-3.0/method/-numeric/i.angle._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=angle,arg,phase
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:939
4+
source_location=refm/api/src/_builtin/Numeric:1066
55

66
--- arg -> 0 | Math::PI
77
--- angle -> 0 | Math::PI

db/db-3.0/method/-numeric/i.ceil._builtin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
names=ceil
22
visibility=public
33
kind=defined
4-
source_location=refm/api/src/_builtin/Numeric:397
4+
source_location=refm/api/src/_builtin/Numeric:524
55

66
--- ceil -> Integer
77

0 commit comments

Comments
 (0)