long-decimal 0.00.11 → 0.00.12

Sign up to get free protection for your applications and to get access to all the features.
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)