long-decimal 0.00.11 → 0.00.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. data/README +6 -3
  2. data/VERSION +1 -1
  3. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +5 -5
  4. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000133.html +22 -0
  5. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000135.html +22 -0
  6. data/doc/classes/LongMath.html +78 -29
  7. data/doc/classes/LongMath.src/M000001.html +1 -1
  8. data/doc/classes/LongMath.src/M000002.html +1 -1
  9. data/doc/classes/LongMath.src/M000003.html +1 -1
  10. data/doc/classes/LongMath.src/M000004.html +1 -1
  11. data/doc/classes/LongMath.src/M000005.html +1 -1
  12. data/doc/classes/LongMath.src/M000006.html +1 -1
  13. data/doc/classes/LongMath.src/M000007.html +1 -1
  14. data/doc/classes/LongMath.src/M000008.html +1 -1
  15. data/doc/classes/LongMath.src/M000009.html +1 -1
  16. data/doc/classes/LongMath.src/M000010.html +1 -1
  17. data/doc/classes/LongMath.src/M000011.html +2 -2
  18. data/doc/classes/LongMath.src/M000012.html +1 -1
  19. data/doc/classes/LongMath.src/M000013.html +1 -1
  20. data/doc/classes/LongMath.src/M000014.html +1 -1
  21. data/doc/classes/LongMath.src/M000015.html +1 -1
  22. data/doc/classes/LongMath.src/M000016.html +14 -11
  23. data/doc/classes/LongMath.src/M000017.html +10 -17
  24. data/doc/classes/LongMath.src/M000018.html +1 -1
  25. data/doc/classes/LongMath.src/M000019.html +2 -1
  26. data/doc/classes/LongMath.src/M000021.html +51 -1
  27. data/doc/classes/LongMath.src/M000022.html +12 -9
  28. data/doc/classes/LongMath.src/M000023.html +28 -5
  29. data/doc/classes/LongMath.src/M000024.html +22 -0
  30. data/doc/classes/LongMath.src/M000025.html +18 -0
  31. data/doc/classes/LongMath/LongDecimal.html +371 -371
  32. data/doc/classes/LongMath/LongDecimal.src/M000058.html +18 -0
  33. data/doc/classes/LongMath/LongDecimal.src/M000059.html +18 -0
  34. data/doc/classes/LongMath/LongDecimal.src/M000060.html +18 -0
  35. data/doc/classes/LongMath/LongDecimal.src/M000061.html +4 -4
  36. data/doc/classes/LongMath/LongDecimal.src/M000062.html +4 -4
  37. data/doc/classes/LongMath/LongDecimal.src/M000063.html +4 -4
  38. data/doc/classes/LongMath/LongDecimal.src/M000064.html +4 -6
  39. data/doc/classes/LongMath/LongDecimal.src/M000065.html +4 -95
  40. data/doc/classes/LongMath/LongDecimal.src/M000066.html +6 -20
  41. data/doc/classes/LongMath/LongDecimal.src/M000067.html +92 -24
  42. data/doc/classes/LongMath/LongDecimal.src/M000068.html +17 -18
  43. data/doc/classes/LongMath/LongDecimal.src/M000069.html +27 -4
  44. data/doc/classes/LongMath/LongDecimal.src/M000070.html +19 -13
  45. data/doc/classes/LongMath/LongDecimal.src/M000071.html +4 -4
  46. data/doc/classes/LongMath/LongDecimal.src/M000072.html +13 -22
  47. data/doc/classes/LongMath/LongDecimal.src/M000073.html +4 -4
  48. data/doc/classes/LongMath/LongDecimal.src/M000074.html +24 -4
  49. data/doc/classes/LongMath/LongDecimal.src/M000075.html +4 -6
  50. data/doc/classes/LongMath/LongDecimal.src/M000076.html +4 -4
  51. data/doc/classes/LongMath/LongDecimal.src/M000077.html +6 -15
  52. data/doc/classes/LongMath/LongDecimal.src/M000078.html +4 -32
  53. data/doc/classes/LongMath/LongDecimal.src/M000079.html +14 -14
  54. data/doc/classes/LongMath/LongDecimal.src/M000080.html +31 -12
  55. data/doc/classes/LongMath/LongDecimal.src/M000081.html +15 -4
  56. data/doc/classes/LongMath/LongDecimal.src/M000082.html +27 -0
  57. data/doc/classes/LongMath/LongDecimal.src/M000083.html +4 -4
  58. data/doc/classes/LongMath/LongDecimal.src/M000085.html +4 -4
  59. data/doc/classes/LongMath/LongDecimal.src/M000086.html +4 -4
  60. data/doc/classes/LongMath/LongDecimal.src/M000087.html +4 -4
  61. data/doc/classes/LongMath/LongDecimal.src/M000088.html +18 -0
  62. data/doc/classes/LongMath/LongDecimal.src/M000089.html +4 -4
  63. data/doc/classes/LongMath/LongDecimal.src/M000090.html +4 -8
  64. data/doc/classes/LongMath/LongDecimal.src/M000091.html +4 -9
  65. data/doc/classes/LongMath/LongDecimal.src/M000092.html +6 -7
  66. data/doc/classes/LongMath/LongDecimal.src/M000093.html +6 -6
  67. data/doc/classes/LongMath/LongDecimal.src/M000094.html +9 -4
  68. data/doc/classes/LongMath/LongDecimal.src/M000095.html +7 -13
  69. data/doc/classes/LongMath/LongDecimal.src/M000096.html +4 -9
  70. data/doc/classes/LongMath/LongDecimal.src/M000097.html +13 -7
  71. data/doc/classes/LongMath/LongDecimal.src/M000098.html +7 -18
  72. data/doc/classes/LongMath/LongDecimal.src/M000099.html +8 -7
  73. data/doc/classes/LongMath/LongDecimal.src/M000100.html +20 -5
  74. data/doc/classes/LongMath/LongDecimal.src/M000101.html +7 -8
  75. data/doc/classes/LongMath/LongDecimal.src/M000102.html +5 -9
  76. data/doc/classes/LongMath/LongDecimal.src/M000103.html +5 -5
  77. data/doc/classes/LongMath/LongDecimal.src/M000104.html +9 -4
  78. data/doc/classes/LongMath/LongDecimal.src/M000105.html +8 -6
  79. data/doc/classes/LongMath/LongDecimal.src/M000106.html +4 -7
  80. data/doc/classes/LongMath/LongDecimal.src/M000107.html +7 -4
  81. data/doc/classes/LongMath/LongDecimal.src/M000108.html +7 -4
  82. data/doc/classes/LongMath/LongDecimal.src/M000109.html +4 -9
  83. data/doc/classes/LongMath/LongDecimal.src/M000110.html +4 -9
  84. data/doc/classes/LongMath/LongDecimal.src/M000111.html +9 -5
  85. data/doc/classes/LongMath/LongDecimal.src/M000112.html +7 -7
  86. data/doc/classes/LongMath/LongDecimal.src/M000113.html +5 -4
  87. data/doc/classes/LongMath/LongDecimal.src/M000114.html +8 -15
  88. data/doc/classes/LongMath/LongDecimal.src/M000115.html +4 -4
  89. data/doc/classes/LongMath/LongDecimal.src/M000116.html +15 -8
  90. data/doc/classes/LongMath/LongDecimal.src/M000117.html +4 -4
  91. data/doc/classes/LongMath/LongDecimal.src/M000119.html +4 -9
  92. data/doc/classes/LongMath/LongDecimal.src/M000121.html +9 -4
  93. data/doc/classes/LongMath/LongDecimal.src/M000122.html +5 -33
  94. data/doc/classes/LongMath/LongDecimal.src/M000123.html +4 -4
  95. data/doc/classes/LongMath/LongDecimal.src/M000124.html +33 -4
  96. data/doc/classes/LongMath/LongDecimal.src/M000125.html +4 -33
  97. data/doc/classes/LongMath/LongDecimal.src/M000126.html +4 -4
  98. data/doc/classes/LongMath/LongDecimal.src/M000128.html +18 -0
  99. data/doc/classes/LongMath/LongDecimal.src/M000129.html +19 -0
  100. data/doc/classes/LongMath/LongDecimal.src/M000130.html +4 -4
  101. data/doc/classes/LongMath/LongDecimal.src/M000131.html +4 -4
  102. data/doc/classes/LongMath/LongDecimal.src/M000132.html +4 -4
  103. data/doc/classes/LongMath/LongDecimal.src/M000133.html +4 -4
  104. data/doc/classes/LongMath/LongDecimalQuot.html +168 -168
  105. data/doc/classes/LongMath/LongDecimalQuot.src/M000026.html +4 -4
  106. data/doc/classes/LongMath/LongDecimalQuot.src/M000027.html +14 -4
  107. data/doc/classes/LongMath/LongDecimalQuot.src/M000028.html +4 -5
  108. data/doc/classes/LongMath/LongDecimalQuot.src/M000029.html +4 -4
  109. data/doc/classes/LongMath/LongDecimalQuot.src/M000030.html +5 -4
  110. data/doc/classes/LongMath/LongDecimalQuot.src/M000031.html +4 -4
  111. data/doc/classes/LongMath/LongDecimalQuot.src/M000032.html +4 -4
  112. data/doc/classes/LongMath/LongDecimalQuot.src/M000033.html +4 -4
  113. data/doc/classes/LongMath/LongDecimalQuot.src/M000034.html +4 -8
  114. data/doc/classes/LongMath/LongDecimalQuot.src/M000035.html +4 -9
  115. data/doc/classes/LongMath/LongDecimalQuot.src/M000036.html +6 -7
  116. data/doc/classes/LongMath/LongDecimalQuot.src/M000037.html +5 -5
  117. data/doc/classes/LongMath/LongDecimalQuot.src/M000038.html +5 -5
  118. data/doc/classes/LongMath/LongDecimalQuot.src/M000039.html +7 -19
  119. data/doc/classes/LongMath/LongDecimalQuot.src/M000040.html +8 -7
  120. data/doc/classes/LongMath/LongDecimalQuot.src/M000041.html +21 -5
  121. data/doc/classes/LongMath/LongDecimalQuot.src/M000042.html +8 -4
  122. data/doc/classes/LongMath/LongDecimalQuot.src/M000043.html +5 -4
  123. data/doc/classes/LongMath/LongDecimalQuot.src/M000044.html +4 -4
  124. data/doc/classes/LongMath/LongDecimalQuot.src/M000045.html +4 -4
  125. data/doc/classes/LongMath/LongDecimalQuot.src/M000046.html +4 -63
  126. data/doc/classes/LongMath/LongDecimalQuot.src/M000047.html +4 -22
  127. data/doc/classes/LongMath/LongDecimalQuot.src/M000048.html +63 -4
  128. data/doc/classes/LongMath/LongDecimalQuot.src/M000049.html +20 -7
  129. data/doc/classes/LongMath/LongDecimalQuot.src/M000050.html +4 -5
  130. data/doc/classes/LongMath/LongDecimalQuot.src/M000051.html +9 -4
  131. data/doc/classes/LongMath/LongDecimalQuot.src/M000052.html +5 -4
  132. data/doc/classes/LongMath/LongDecimalQuot.src/M000053.html +4 -4
  133. data/doc/classes/LongMath/LongDecimalQuot.src/M000054.html +1 -1
  134. data/doc/classes/LongMath/LongDecimalQuot.src/M000055.html +1 -1
  135. data/doc/classes/LongMath/LongDecimalQuot.src/M000056.html +18 -0
  136. data/doc/classes/LongMath/LongDecimalQuot.src/M000057.html +18 -0
  137. data/doc/classes/LongMath/LongDecimalQuot.src/M000058.html +1 -1
  138. data/doc/classes/LongMath/LongDecimalQuot.src/M000059.html +4 -4
  139. data/doc/classes/LongMath/Numeric.html +5 -5
  140. data/doc/classes/LongMath/Numeric.src/M000132.html +18 -0
  141. data/doc/classes/LongMath/Numeric.src/M000134.html +18 -0
  142. data/doc/created.rid +1 -1
  143. data/doc/files/lib/longdecimal_rb.html +2 -2
  144. data/doc/fr_method_index.html +115 -113
  145. data/lib/longdecimal.rb +84 -34
  146. data/test/testlongdecimal.rb +271 -15
  147. metadata +17 -2
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # testlongdecimal.rb -- runit test for longdecimal.rb
4
4
  #
5
- # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testlongdecimal.rb,v 1.6 2006/03/10 20:10:45 bk1 Exp $
6
- # CVS-Label: $Name: PRE_ALPHA_0_10 $
5
+ # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testlongdecimal.rb,v 1.7 2006/03/18 06:03:58 bk1 Exp $
6
+ # CVS-Label: $Name: PRE_ALPHA_0_12 $
7
7
  # Author: $Author: bk1 $ (Karl Brodowsky)
8
8
  #
9
9
 
@@ -18,7 +18,7 @@ load "lib/longdecimal.rb"
18
18
  #
19
19
  class TestLongDecimal_class < RUNIT::TestCase
20
20
 
21
- @RCS_ID='-$Id: testlongdecimal.rb,v 1.6 2006/03/10 20:10:45 bk1 Exp $-'
21
+ @RCS_ID='-$Id: testlongdecimal.rb,v 1.7 2006/03/18 06:03:58 bk1 Exp $-'
22
22
 
23
23
  def check_split_merge_words(x, l, wl)
24
24
  w = LongMath.split_to_words(x, l)
@@ -101,6 +101,7 @@ class TestLongDecimal_class < RUNIT::TestCase
101
101
  # test the calculation of the exponential function
102
102
  #
103
103
  def test_exp
104
+ xx = LongMath.log(10.to_ld, 10)*100
104
105
  check_exp_floated(700, 10)
105
106
  check_exp_floated(100, 10)
106
107
  check_exp_floated(1, 10)
@@ -111,7 +112,9 @@ class TestLongDecimal_class < RUNIT::TestCase
111
112
  check_exp_floated(-1, 10)
112
113
  check_exp_floated(-100, 10)
113
114
  check_exp_floated(-700, 10)
114
-
115
+ check_exp_floated(xx, 10)
116
+ check_exp_floated(-xx, 10)
117
+
115
118
  check_exp_floated(700, 100)
116
119
  check_exp_floated(100, 100)
117
120
  check_exp_floated(1, 100)
@@ -122,6 +125,8 @@ class TestLongDecimal_class < RUNIT::TestCase
122
125
  check_exp_floated(-1, 100)
123
126
  check_exp_floated(-100, 100)
124
127
  check_exp_floated(-700, 100)
128
+ check_exp_floated(xx, 100)
129
+ check_exp_floated(-xx, 100)
125
130
  end
126
131
 
127
132
  #
@@ -153,15 +158,15 @@ class TestLongDecimal_class < RUNIT::TestCase
153
158
  if (y <= LongMath::MAX_EXP_ABLE) then
154
159
  eprec = prec
155
160
  if (y > 1) then
156
- lx = 0
157
- if (x > LongMath::MAX_FLOATABLE) then
158
- puts("unusual x=#{x} y=#{y}\n")
159
- lx = LongMath::MAX_EXP_ABLE
160
- else
161
- lx = Math.log(x.to_f)
162
- end
161
+ lx = 0
162
+ if (x > LongMath::MAX_FLOATABLE) then
163
+ puts("unusual x=#{x} y=#{y}\n")
164
+ lx = LongMath::MAX_EXP_ABLE
165
+ else
166
+ lx = Math.log(x.to_f)
167
+ end
163
168
  l10 = (lx / Math.log(10)).ceil
164
- eprec -= l10
169
+ eprec = [ eprec - l10, 0 ].max
165
170
  end
166
171
 
167
172
  z = LongMath.exp(y, eprec)
@@ -176,7 +181,7 @@ class TestLongDecimal_class < RUNIT::TestCase
176
181
  end
177
182
 
178
183
  #
179
- # test the calculation of the exponential function
184
+ # test the calculation of the logarithm function
180
185
  #
181
186
  def test_log
182
187
  check_log_floated(10**2000, 10)
@@ -198,6 +203,145 @@ class TestLongDecimal_class < RUNIT::TestCase
198
203
  check_log_floated(LongDecimal(1, 2000), 100)
199
204
  end
200
205
 
206
+ #
207
+ # helper method for test_exp
208
+ # tests if LongMath::power(x, y, prec) with precision prec is calculated correctly
209
+ #
210
+ def check_power_floated(x, y, prec)
211
+
212
+ # puts("start: check_power_floated: x=#{x} y=#{y} prec=#{prec}\n")
213
+ # make sure x and y are LongDecimal
214
+ x0 = x
215
+ x = x.to_ld
216
+ y0 = y
217
+ y = y.to_ld
218
+ # calculate z = x**y
219
+ z = LongMath.power(x, y, prec)
220
+
221
+ # compare y against w = x**y calculated using regular floating point arithmetic
222
+ w = (x.to_f) ** (y.to_f)
223
+ zf = z.to_f
224
+ assert((zf - w) / [zf.abs, w.abs, Float::MIN].max < 1e-9, "z=#{zf.to_s} and w=#{w.to_s} should be almost equal x=#{x} y=#{y}")
225
+
226
+ # check by taking log(z) = y * log(x)
227
+ # we have to take into account that we might not have enough
228
+ # significant digits, so we have to go down with the precision
229
+ if (z > 0) then
230
+ lprec = prec
231
+ if (z < 1) then
232
+ l10 = (Math.log(z.to_f) / Math.log(10)).round
233
+ lprec += l10
234
+ end
235
+ if (x < 1) then
236
+ l10 = (Math.log(x.to_f) / Math.log(10)).round
237
+ lprec += l10
238
+ end
239
+ l10y = 0
240
+ if (y > 1) then
241
+ l10y = (Math.log(y.to_f) / Math.log(10)).ceil
242
+ end
243
+ u = LongMath.log(z, lprec)
244
+ v = LongMath.log(x, lprec+l10y)
245
+ yv = (y*v).round_to_scale(lprec, LongDecimal::ROUND_HALF_DOWN)
246
+ assert((u - yv).abs <= u.unit, "u=#{u} and y*v=#{yv} should be almost equal (x=#{x.to_s} y=#{y.to_s} z=#{z.to_s} u=#{u.to_s} v=#{v.to_s} lprec=#{lprec} prec=#{prec})")
247
+ end
248
+ # puts("ok check_power_floated: x=#{x} y=#{y} prec=#{prec}\n")
249
+
250
+ end
251
+
252
+ #
253
+ # test the calculation of the exponential function
254
+ #
255
+ def test_lm_power
256
+ check_power_floated(1, 1, 10)
257
+ check_power_floated(1, 2, 10)
258
+ check_power_floated(2, 1, 10)
259
+ check_power_floated(2, 2, 10)
260
+ check_power_floated(100, 10, 10)
261
+ check_power_floated(10, 100, 10)
262
+ check_power_floated(10, 100, 100)
263
+ end
264
+
265
+ #
266
+ # helper method for test_log
267
+ # tests if log10(x) with precision prec is calculated correctly
268
+ #
269
+ def check_log10_floated(x, prec)
270
+
271
+ # make sure x is LongDecimal
272
+ x0 = x
273
+ x = x.to_ld
274
+ # calculate y = log10(x)
275
+ y = LongMath.log10(x, prec)
276
+
277
+ # compare y against z = log10(x) calculated using regular floating
278
+ # point arithmetic
279
+ if (x <= LongMath::MAX_FLOATABLE) then
280
+ xf = x.to_f
281
+ if (xf > 0) then
282
+ z = Math.log(x.to_f) / Math.log(10)
283
+ yf = y.to_f
284
+ assert((yf - z) / [yf.abs, z.abs, Float::MIN].max < 1e-9, "y=#{yf.to_s} and z=#{z.to_s} should be almost equal x=#{x}")
285
+ end
286
+ end
287
+
288
+ # check by taking 10**(log10(x))
289
+ # we have to take into account that we might not have enough
290
+ # significant digits, so we have to go down with the precision
291
+ if (y <= LongMath::MAX_EXP_ABLE) then
292
+ eprec = prec
293
+ if (y > 1) then
294
+ lx = 0
295
+ if (x > LongMath::MAX_FLOATABLE) then
296
+ puts("unusual x=#{x} y=#{y}\n")
297
+ lx = LongMath::MAX_EXP_ABLE
298
+ else
299
+ lx = Math.log(x.to_f)
300
+ end
301
+ l10 = (lx / Math.log(10)).ceil
302
+ eprec = [ eprec - l10, 0 ].max
303
+ end
304
+
305
+ z = LongMath.power(10.to_ld, y, eprec)
306
+ assert((x - z).abs <= z.unit, "x=#{x.to_s} and z=#{z.to_s} should be almost equal (y=#{y.to_s} eprec=#{eprec} prec=#{prec})")
307
+ end
308
+
309
+ end
310
+
311
+ #
312
+ # helper method for test_log
313
+ # tests if log10(x) with precision prec is calculated correctly
314
+ #
315
+ def check_log10_exact(x, log10x, prec)
316
+
317
+ # make sure x is LongDecimal
318
+ x0 = x
319
+ x = x.to_ld
320
+ log10x = log10x.to_ld.round_to_scale(prec)
321
+ # calculate y = log10(x)
322
+ y = LongMath.log10(x, prec)
323
+ assert_equal(y, log10x, "log x should match exactly x=#{x} y=#{y} log10x=#{log10x}")
324
+ end
325
+
326
+ #
327
+ # test the calculation of the logarithm function
328
+ #
329
+ def test_log10
330
+ check_log10_floated(10**2000, 30)
331
+ check_log10_floated(100, 30)
332
+ check_log10_floated(1, 30)
333
+ check_log10_floated(0.01, 30)
334
+ check_log10_floated(1e-10, 30)
335
+ check_log10_floated(1e-90, 30)
336
+ check_log10_floated(1e-300, 30)
337
+ check_log10_floated(LongDecimal(1, 2000), 30)
338
+
339
+ check_log10_exact(10**2000, 2000, 30)
340
+ check_log10_exact(10**0, 0, 30)
341
+ check_log10_exact(10**1, 1, 30)
342
+ check_log10_exact(10**10, 10, 30)
343
+ end
344
+
201
345
  #
202
346
  # helper method for test_sqrtb
203
347
  #
@@ -357,7 +501,7 @@ class TestLongDecimal_class < RUNIT::TestCase
357
501
  end
358
502
 
359
503
  #
360
- # test construction from Integer
504
+ # test construction of LongDecimal from Integer
361
505
  #
362
506
  def test_int_init
363
507
  l = LongDecimal(224)
@@ -415,7 +559,7 @@ class TestLongDecimal_class < RUNIT::TestCase
415
559
  end
416
560
 
417
561
  #
418
- # test rounding with ROUND_UP
562
+ # test rounding of LongDecimal with ROUND_UP
419
563
  #
420
564
  def test_round_to_scale_up
421
565
  l = LongDecimal("2.21")
@@ -761,6 +905,10 @@ class TestLongDecimal_class < RUNIT::TestCase
761
905
  assert_equal(-23, l.to_i, "l=#{l.inspect}")
762
906
  end
763
907
 
908
+ #
909
+ # test adjustment of scale which is used as preparation for addition
910
+ # and subtraction
911
+ #
764
912
  def test_equalize_scale
765
913
  x = LongDecimal(1, 0)
766
914
  y = LongDecimal(10, 1)
@@ -778,6 +926,9 @@ class TestLongDecimal_class < RUNIT::TestCase
778
926
  assert_equal(200, v.int_val, "int_val must be 200")
779
927
  end
780
928
 
929
+ #
930
+ # test adjustment of scale which is used as preparation for division
931
+ #
781
932
  def test_anti_equalize_scale
782
933
  x = LongDecimal(20, 3)
783
934
  y = LongDecimal(10, 1)
@@ -788,6 +939,9 @@ class TestLongDecimal_class < RUNIT::TestCase
788
939
  assert_equal(1000, v.int_val, "int_val must be 1000")
789
940
  end
790
941
 
942
+ #
943
+ # test unary minus operation (negation)
944
+ #
791
945
  def test_negation
792
946
  x = LongDecimal(0, 5)
793
947
  assert_equal(-x, x, "x and -x are equal for negative x=#{x.inspect}")
@@ -798,6 +952,9 @@ class TestLongDecimal_class < RUNIT::TestCase
798
952
  assert_equal(-224, y.int_val, "int_val of y must be -224 y=#{y.inspect}")
799
953
  end
800
954
 
955
+ #
956
+ # test addition of LongDecimal
957
+ #
801
958
  def test_add
802
959
  x = LongDecimal(224, 2)
803
960
 
@@ -856,6 +1013,9 @@ class TestLongDecimal_class < RUNIT::TestCase
856
1013
  assert_equal(zz, z, "z=#{z.inspect}")
857
1014
  end
858
1015
 
1016
+ #
1017
+ # test subtraction of LongDecimal
1018
+ #
859
1019
  def test_sub
860
1020
  x = LongDecimal(224, 2)
861
1021
 
@@ -920,6 +1080,9 @@ class TestLongDecimal_class < RUNIT::TestCase
920
1080
  assert_equal(zz, z, "z=#{z.inspect}")
921
1081
  end
922
1082
 
1083
+ #
1084
+ # test multiplication of LongDecimal
1085
+ #
923
1086
  def test_mul
924
1087
  x = LongDecimal(224, 2)
925
1088
 
@@ -978,6 +1141,9 @@ class TestLongDecimal_class < RUNIT::TestCase
978
1141
  assert((zz-z).abs < 1e-9, "z=#{z.inspect}")
979
1142
  end
980
1143
 
1144
+ #
1145
+ # test division of LongDecimal
1146
+ #
981
1147
  def test_div
982
1148
  x = LongDecimal(224, 2)
983
1149
 
@@ -1042,6 +1208,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1042
1208
  assert((zz-z).abs < 1e-9, "z=#{z.inspect}")
1043
1209
  end
1044
1210
 
1211
+ #
1212
+ # test power (**) of LongDecimal
1213
+ #
1045
1214
  def test_pow
1046
1215
 
1047
1216
  x = LongDecimal(224, 2)
@@ -1101,6 +1270,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1101
1270
  assert((zz-z).abs < 1e-9, "z=#{z.inspect}")
1102
1271
  end
1103
1272
 
1273
+ #
1274
+ # test division with remainder of LongDecimal
1275
+ #
1104
1276
  def test_divmod
1105
1277
  x = LongDecimal(224, 2)
1106
1278
 
@@ -1183,6 +1355,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1183
1355
  end
1184
1356
  end
1185
1357
 
1358
+ #
1359
+ # test absolute value of LongDecimal
1360
+ #
1186
1361
  def test_abs
1187
1362
  x = LongDecimal(-224, 2)
1188
1363
  y = x.abs
@@ -1195,6 +1370,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1195
1370
  assert_equal(x, y, "abs of zero")
1196
1371
  end
1197
1372
 
1373
+ #
1374
+ # test moving of decimal point of LongDecimal
1375
+ #
1198
1376
  def test_move_point
1199
1377
  x = LongDecimal(224, 2)
1200
1378
 
@@ -1228,6 +1406,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1228
1406
  assert_equal(z, y, "2240")
1229
1407
  end
1230
1408
 
1409
+ #
1410
+ # test ufo-operator (<=>) of LongDecimal
1411
+ #
1231
1412
  def test_ufo
1232
1413
  x = LongDecimal(224, 2)
1233
1414
 
@@ -1281,6 +1462,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1281
1462
 
1282
1463
  end
1283
1464
 
1465
+ #
1466
+ # test sign-method of LongDecimal
1467
+ #
1284
1468
  def test_sgn
1285
1469
  x = LongDecimal(0, 5)
1286
1470
  s = x.sgn
@@ -1293,6 +1477,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1293
1477
  assert_equal(-1, s, "must be -1")
1294
1478
  end
1295
1479
 
1480
+ #
1481
+ # test equality-comparison (==) of LongDecimal
1482
+ #
1296
1483
  def test_equal
1297
1484
  x = LongDecimal(224, 2)
1298
1485
  y = LongDecimal(2240, 3)
@@ -1303,6 +1490,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1303
1490
  assert_equal(y, y, "y equals y")
1304
1491
  end
1305
1492
 
1493
+ #
1494
+ # test construction of LongDecimalQuot from LongDecimal
1495
+ #
1306
1496
  def test_ldq_ld_init
1307
1497
  x = LongDecimal(224, 2)
1308
1498
  y = LongDecimal(225, 3)
@@ -1311,6 +1501,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1311
1501
  assert_equal(zz, z, "224/225")
1312
1502
  end
1313
1503
 
1504
+ #
1505
+ # test rounding of LongDecimalQuot with ROUND_UP
1506
+ #
1314
1507
  def test_ldq_round_to_scale_up
1315
1508
 
1316
1509
  # 0.99555555555555...
@@ -1344,6 +1537,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1344
1537
  assert_equal("1.0000", r.to_s, "l=#{l.inspect} r=#{r.inspect}")
1345
1538
  end
1346
1539
 
1540
+ #
1541
+ # test rounding of LongDecimalQuot with ROUND_DOWN
1542
+ #
1347
1543
  def test_ldq_round_to_scale_down
1348
1544
 
1349
1545
  # 0.99555555555555...
@@ -1377,6 +1573,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1377
1573
  assert_equal("1.0000", r.to_s, "l=#{l.inspect} r=#{r.inspect}")
1378
1574
  end
1379
1575
 
1576
+ #
1577
+ # test rounding of LongDecimalQuot with ROUND_CEILING
1578
+ #
1380
1579
  def test_ldq_round_to_scale_ceiling
1381
1580
 
1382
1581
  # 0.99555555555555...
@@ -1409,6 +1608,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1409
1608
  assert_equal("1.0000", r.to_s, "l=#{l.inspect} r=#{r.inspect}")
1410
1609
  end
1411
1610
 
1611
+ #
1612
+ # test rounding of LongDecimalQuot with ROUND_FLOOR
1613
+ #
1412
1614
  def test_ldq_round_to_scale_floor
1413
1615
 
1414
1616
  # 0.99555555555555...
@@ -1441,6 +1643,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1441
1643
  assert_equal("1.0000", r.to_s, "l=#{l.inspect} r=#{r.inspect}")
1442
1644
  end
1443
1645
 
1646
+ #
1647
+ # test rounding of LongDecimalQuot with ROUND_HALF_UP
1648
+ #
1444
1649
  def test_ldq_round_to_scale_half_up
1445
1650
 
1446
1651
  # 0.99555555555555...
@@ -1479,6 +1684,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1479
1684
  assert_equal("225/4[0]", l.to_s, "l=#{l.inspect} r=#{r.inspect}")
1480
1685
  end
1481
1686
 
1687
+ #
1688
+ # test rounding of LongDecimalQuot with ROUND_HALF_DOWN
1689
+ #
1482
1690
  def test_ldq_round_to_scale_half_down
1483
1691
 
1484
1692
  # 0.99555555555555...
@@ -1517,6 +1725,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1517
1725
  assert_equal("225/4[0]", l.to_s, "l=#{l.inspect} r=#{r.inspect}")
1518
1726
  end
1519
1727
 
1728
+ #
1729
+ # test rounding of LongDecimalQuot with ROUND_HALF_EVEN
1730
+ #
1520
1731
  def test_ldq_round_to_scale_half_even
1521
1732
 
1522
1733
  # 0.99555555555555...
@@ -1561,6 +1772,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1561
1772
  assert_equal("227/4[0]", l.to_s, "l=#{l.inspect} r=#{r.inspect}")
1562
1773
  end
1563
1774
 
1775
+ #
1776
+ # test rounding of LongDecimalQuot with ROUND_UNNECESSARY
1777
+ #
1564
1778
  def test_ldq_round_to_scale_unnecessary
1565
1779
  l = LongDecimalQuot(Rational(225, 4), 5)
1566
1780
  r = l.round_to_scale(2, LongDecimal::ROUND_UNNECESSARY)
@@ -1573,6 +1787,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1573
1787
  end
1574
1788
  end
1575
1789
 
1790
+ #
1791
+ # test conversion of LongDecimalQuot to String
1792
+ #
1576
1793
  def test_ldq_to_s
1577
1794
  l = LongDecimalQuot(Rational(224, 225), 226)
1578
1795
  assert_equal("224/225[226]", l.to_s, "l=#{l.inspect}")
@@ -1580,6 +1797,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1580
1797
  assert_equal("-224/225[226]", l.to_s, "l=#{l.inspect}")
1581
1798
  end
1582
1799
 
1800
+ #
1801
+ # test conversion of LongDecimalQuot to Rational
1802
+ #
1583
1803
  def test_ldq_to_r
1584
1804
  rr = Rational(224, 225)
1585
1805
  l = LongDecimalQuot(rr, 22)
@@ -1598,6 +1818,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1598
1818
  assert_equal(rr, r, "must be equal")
1599
1819
  end
1600
1820
 
1821
+ #
1822
+ # test conversion of LongDecimalQuot to Float
1823
+ #
1601
1824
  def test_ldq_to_f
1602
1825
  rr = Rational(224, 225)
1603
1826
  l = LongDecimalQuot(rr, 22)
@@ -1621,6 +1844,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1621
1844
 
1622
1845
  # to_i not tested, goes via to_r anyway
1623
1846
 
1847
+ #
1848
+ # test negation operator (unary -) of LongDecimalQuot
1849
+ #
1624
1850
  def test_ldq_negation
1625
1851
  x = LongDecimalQuot(Rational(0, 2), 3)
1626
1852
  assert_equal(-x, x, "x and -x are equal for negative x=#{x.inspect}")
@@ -1632,6 +1858,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1632
1858
  assert_equal(yy, y, "yy and y must be equal")
1633
1859
  end
1634
1860
 
1861
+ #
1862
+ # test addition operator (binary +) of LongDecimalQuot
1863
+ #
1635
1864
  def test_ldq_add
1636
1865
  x = LongDecimalQuot(Rational(224, 225), 226)
1637
1866
 
@@ -1692,6 +1921,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1692
1921
  assert((zz-z).abs < 1e-9, "z=#{z.inspect}")
1693
1922
  end
1694
1923
 
1924
+ #
1925
+ # test subtraction operator (binary -) of LongDecimalQuot
1926
+ #
1695
1927
  def test_ldq_sub
1696
1928
  x = LongDecimalQuot(Rational(224, 225), 226)
1697
1929
 
@@ -1756,6 +1988,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1756
1988
  assert((zz-z).abs < 1e-9, "z=#{z.inspect} zz=#{zz.inspect}")
1757
1989
  end
1758
1990
 
1991
+ #
1992
+ # test multiplication operator (*) of LongDecimalQuot
1993
+ #
1759
1994
  def test_ldq_mul
1760
1995
  x = LongDecimalQuot(Rational(224, 225), 226)
1761
1996
 
@@ -1814,6 +2049,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1814
2049
  assert((zz-z).abs < 1e-9, "z=#{z.inspect} zz=#{zz.inspect}")
1815
2050
  end
1816
2051
 
2052
+ #
2053
+ # test division operator (/) of LongDecimalQuot
2054
+ #
1817
2055
  def test_ldq_div
1818
2056
  x = LongDecimalQuot(Rational(224, 225), 226)
1819
2057
 
@@ -1878,6 +2116,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1878
2116
  assert((zz-z).abs < 1e-9, "z=#{z.inspect} zz=#{zz.inspect}")
1879
2117
  end
1880
2118
 
2119
+ #
2120
+ # test power operator (**) of LongDecimalQuot
2121
+ #
1881
2122
  def test_ldq_pow
1882
2123
 
1883
2124
  x = LongDecimalQuot(Rational(224, 225), 226)
@@ -1937,6 +2178,9 @@ class TestLongDecimal_class < RUNIT::TestCase
1937
2178
  assert((zz-z).abs < 1e-9, "z=#{z.inspect}")
1938
2179
  end
1939
2180
 
2181
+ #
2182
+ # test divmod of LongDecimalQuot for division with remainder
2183
+ #
1940
2184
  def test_ldq_divmod
1941
2185
  x = LongDecimalQuot(Rational(224, 225), 226)
1942
2186
 
@@ -2019,6 +2263,9 @@ class TestLongDecimal_class < RUNIT::TestCase
2019
2263
  end
2020
2264
  end
2021
2265
 
2266
+ #
2267
+ # test absolute value of LongDecimalQuot
2268
+ #
2022
2269
  def test_ldq_abs
2023
2270
  x = LongDecimalQuot(Rational(-224, 225), 226)
2024
2271
  y = x.abs
@@ -2031,6 +2278,9 @@ class TestLongDecimal_class < RUNIT::TestCase
2031
2278
  assert_equal(x, y, "abs of zero")
2032
2279
  end
2033
2280
 
2281
+ #
2282
+ # test ufo operator (<=>) of LongDecimalQuot
2283
+ #
2034
2284
  def test_ldq_ufo
2035
2285
  x = LongDecimalQuot(Rational(224, 225), 226)
2036
2286
 
@@ -2084,6 +2334,9 @@ class TestLongDecimal_class < RUNIT::TestCase
2084
2334
 
2085
2335
  end
2086
2336
 
2337
+ #
2338
+ # test sign method of LongDecimalQuot
2339
+ #
2087
2340
  def test_ldq_sgn
2088
2341
  x = LongDecimalQuot(Rational(0, 5), 1000)
2089
2342
  s = x.sgn
@@ -2096,6 +2349,9 @@ class TestLongDecimal_class < RUNIT::TestCase
2096
2349
  assert_equal(-1, s, "must be -1")
2097
2350
  end
2098
2351
 
2352
+ #
2353
+ # test equality operator (==) of LongDecimalQuot
2354
+ #
2099
2355
  def test_ldq_equal
2100
2356
  x = LongDecimalQuot(Rational(224, 225), 226)
2101
2357
  y = LongDecimalQuot(Rational(224, 225), 227)