long-decimal 0.01.01 → 0.01.02

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 (193) hide show
  1. data/README +17 -94
  2. data/VERSION +1 -1
  3. data/doc/classes/Integer.html +239 -0
  4. data/doc/classes/Integer.src/M000036.html +18 -0
  5. data/doc/classes/Integer.src/M000039.html +145 -0
  6. data/doc/classes/LongDecimal.html +453 -399
  7. data/doc/classes/LongDecimal.src/M000040.html +4 -4
  8. data/doc/classes/LongDecimal.src/M000041.html +4 -4
  9. data/doc/classes/LongDecimal.src/M000042.html +4 -6
  10. data/doc/classes/LongDecimal.src/M000043.html +4 -106
  11. data/doc/classes/LongDecimal.src/M000044.html +4 -21
  12. data/doc/classes/LongDecimal.src/M000045.html +4 -11
  13. data/doc/classes/LongDecimal.src/M000046.html +6 -27
  14. data/doc/classes/LongDecimal.src/M000047.html +103 -16
  15. data/doc/classes/LongDecimal.src/M000048.html +21 -4
  16. data/doc/classes/LongDecimal.src/M000049.html +10 -14
  17. data/doc/classes/LongDecimal.src/M000050.html +22 -36
  18. data/doc/classes/LongDecimal.src/M000051.html +34 -4
  19. data/doc/classes/LongDecimal.src/M000052.html +17 -6
  20. data/doc/classes/LongDecimal.src/M000053.html +4 -6
  21. data/doc/classes/LongDecimal.src/M000054.html +15 -4
  22. data/doc/classes/LongDecimal.src/M000055.html +44 -12
  23. data/doc/classes/LongDecimal.src/M000056.html +4 -7
  24. data/doc/classes/LongDecimal.src/M000057.html +8 -4
  25. data/doc/classes/LongDecimal.src/M000058.html +6 -15
  26. data/doc/classes/LongDecimal.src/M000059.html +4 -13
  27. data/doc/classes/LongDecimal.src/M000060.html +15 -4
  28. data/doc/classes/LongDecimal.src/M000061.html +7 -5
  29. data/doc/classes/LongDecimal.src/M000062.html +4 -4
  30. data/doc/classes/LongDecimal.src/M000063.html +15 -5
  31. data/doc/classes/LongDecimal.src/M000064.html +13 -5
  32. data/doc/classes/LongDecimal.src/M000065.html +4 -4
  33. data/doc/classes/LongDecimal.src/M000067.html +4 -8
  34. data/doc/classes/LongDecimal.src/M000068.html +5 -9
  35. data/doc/classes/LongDecimal.src/M000069.html +5 -9
  36. data/doc/classes/LongDecimal.src/M000070.html +4 -9
  37. data/doc/classes/LongDecimal.src/M000071.html +4 -4
  38. data/doc/classes/LongDecimal.src/M000072.html +6 -17
  39. data/doc/classes/LongDecimal.src/M000073.html +7 -7
  40. data/doc/classes/LongDecimal.src/M000074.html +7 -7
  41. data/doc/classes/LongDecimal.src/M000075.html +7 -19
  42. data/doc/classes/LongDecimal.src/M000076.html +4 -8
  43. data/doc/classes/LongDecimal.src/M000077.html +19 -5
  44. data/doc/classes/LongDecimal.src/M000078.html +7 -7
  45. data/doc/classes/LongDecimal.src/M000079.html +7 -7
  46. data/doc/classes/LongDecimal.src/M000080.html +19 -7
  47. data/doc/classes/LongDecimal.src/M000081.html +8 -4
  48. data/doc/classes/LongDecimal.src/M000082.html +5 -7
  49. data/doc/classes/LongDecimal.src/M000083.html +8 -6
  50. data/doc/classes/LongDecimal.src/M000084.html +9 -4
  51. data/doc/classes/LongDecimal.src/M000085.html +9 -4
  52. data/doc/classes/LongDecimal.src/M000086.html +4 -9
  53. data/doc/classes/LongDecimal.src/M000087.html +6 -8
  54. data/doc/classes/LongDecimal.src/M000088.html +7 -5
  55. data/doc/classes/LongDecimal.src/M000089.html +4 -9
  56. data/doc/classes/LongDecimal.src/M000090.html +4 -4
  57. data/doc/classes/LongDecimal.src/M000091.html +9 -4
  58. data/doc/classes/LongDecimal.src/M000092.html +9 -4
  59. data/doc/classes/LongDecimal.src/M000093.html +5 -4
  60. data/doc/classes/LongDecimal.src/M000094.html +7 -57
  61. data/doc/classes/LongDecimal.src/M000095.html +4 -4
  62. data/doc/classes/LongDecimal.src/M000096.html +4 -4
  63. data/doc/classes/LongDecimal.src/M000097.html +4 -5
  64. data/doc/classes/LongDecimal.src/M000098.html +4 -5
  65. data/doc/classes/LongDecimal.src/M000099.html +59 -5
  66. data/doc/classes/LongDecimal.src/M000100.html +4 -5
  67. data/doc/classes/LongDecimal.src/M000101.html +4 -4
  68. data/doc/classes/LongDecimal.src/M000104.html +19 -0
  69. data/doc/classes/LongDecimal.src/M000105.html +19 -0
  70. data/doc/classes/LongDecimal.src/M000106.html +18 -0
  71. data/doc/classes/LongDecimal.src/M000107.html +18 -0
  72. data/doc/classes/LongDecimal.src/M000108.html +18 -0
  73. data/doc/classes/LongDecimal.src/M000109.html +18 -0
  74. data/doc/classes/LongDecimalBase.html +69 -66
  75. data/doc/classes/LongDecimalBase.src/M000113.html +4 -9
  76. data/doc/classes/LongDecimalBase.src/M000114.html +4 -5
  77. data/doc/classes/LongDecimalBase.src/M000115.html +4 -9
  78. data/doc/classes/LongDecimalBase.src/M000116.html +4 -9
  79. data/doc/classes/LongDecimalBase.src/M000117.html +4 -5
  80. data/doc/classes/LongDecimalBase.src/M000118.html +23 -0
  81. data/doc/classes/LongDecimalBase.src/M000121.html +23 -0
  82. data/doc/classes/LongDecimalBase.src/M000122.html +19 -0
  83. data/doc/classes/LongDecimalBase.src/M000123.html +18 -0
  84. data/doc/classes/LongDecimalQuot.html +33 -27
  85. data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
  86. data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
  87. data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
  88. data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
  89. data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
  90. data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
  91. data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
  92. data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
  93. data/doc/classes/LongDecimalQuot.src/M000011.html +1 -1
  94. data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
  95. data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
  96. data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
  97. data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
  98. data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
  99. data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
  100. data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
  101. data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
  102. data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
  103. data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
  104. data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
  105. data/doc/classes/LongDecimalQuot.src/M000023.html +1 -1
  106. data/doc/classes/LongDecimalQuot.src/M000024.html +1 -1
  107. data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
  108. data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
  109. data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
  110. data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
  111. data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
  112. data/doc/classes/LongDecimalQuot.src/M000030.html +1 -1
  113. data/doc/classes/LongDecimalQuot.src/M000031.html +1 -1
  114. data/doc/classes/LongDecimalQuot.src/M000034.html +1 -1
  115. data/doc/classes/LongDecimalQuot.src/M000035.html +1 -1
  116. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +25 -24
  117. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000156.html +22 -0
  118. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000157.html +18 -0
  119. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000158.html +18 -0
  120. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000159.html +18 -0
  121. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000161.html +25 -0
  122. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000162.html +18 -0
  123. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000163.html +18 -0
  124. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000164.html +18 -0
  125. data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.html +178 -0
  126. data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000165.html +25 -0
  127. data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000166.html +18 -0
  128. data/doc/classes/LongDecimalRoundingMode.html +41 -4
  129. data/doc/classes/LongMath/CacheKey.html +10 -10
  130. data/doc/classes/LongMath/CacheKey.src/M000155.html +36 -0
  131. data/doc/classes/LongMath/CacheKey.src/M000160.html +36 -0
  132. data/doc/classes/LongMath.html +246 -235
  133. data/doc/classes/LongMath.src/M000124.html +5 -18
  134. data/doc/classes/LongMath.src/M000125.html +4 -18
  135. data/doc/classes/LongMath.src/M000126.html +4 -5
  136. data/doc/classes/LongMath.src/M000127.html +5 -29
  137. data/doc/classes/LongMath.src/M000128.html +4 -5
  138. data/doc/classes/LongMath.src/M000129.html +14 -53
  139. data/doc/classes/LongMath.src/M000130.html +17 -20
  140. data/doc/classes/LongMath.src/M000131.html +5 -36
  141. data/doc/classes/LongMath.src/M000132.html +29 -6
  142. data/doc/classes/LongMath.src/M000133.html +5 -33
  143. data/doc/classes/LongMath.src/M000134.html +47 -41
  144. data/doc/classes/LongMath.src/M000135.html +21 -7
  145. data/doc/classes/LongMath.src/M000136.html +36 -4
  146. data/doc/classes/LongMath.src/M000137.html +6 -4
  147. data/doc/classes/LongMath.src/M000138.html +31 -70
  148. data/doc/classes/LongMath.src/M000139.html +45 -38
  149. data/doc/classes/LongMath.src/M000140.html +7 -4
  150. data/doc/classes/LongMath.src/M000141.html +4 -4
  151. data/doc/classes/LongMath.src/M000142.html +4 -6
  152. data/doc/classes/LongMath.src/M000143.html +67 -14
  153. data/doc/classes/LongMath.src/M000144.html +39 -14
  154. data/doc/classes/LongMath.src/M000145.html +4 -44
  155. data/doc/classes/LongMath.src/M000146.html +5 -339
  156. data/doc/classes/LongMath.src/M000147.html +6 -25
  157. data/doc/classes/LongMath.src/M000148.html +14 -75
  158. data/doc/classes/LongMath.src/M000149.html +33 -0
  159. data/doc/classes/LongMath.src/M000150.html +58 -0
  160. data/doc/classes/LongMath.src/M000151.html +406 -0
  161. data/doc/classes/LongMath.src/M000152.html +63 -0
  162. data/doc/classes/LongMath.src/M000153.html +117 -0
  163. data/doc/classes/LongMath.src/M000154.html +150 -0
  164. data/doc/classes/LongMath.src/M000155.html +63 -0
  165. data/doc/classes/LongMath.src/M000156.html +18 -0
  166. data/doc/classes/LongMath.src/M000157.html +19 -0
  167. data/doc/classes/LongMath.src/M000158.html +18 -0
  168. data/doc/classes/LongMath.src/M000159.html +19 -0
  169. data/doc/classes/Numeric.html +23 -21
  170. data/doc/classes/Numeric.src/M000106.html +18 -0
  171. data/doc/classes/Numeric.src/M000110.html +23 -0
  172. data/doc/classes/Numeric.src/M000111.html +18 -0
  173. data/doc/classes/Rational.html +18 -16
  174. data/doc/classes/Rational.src/M000107.html +23 -0
  175. data/doc/classes/Rational.src/M000112.html +23 -0
  176. data/doc/created.rid +1 -1
  177. data/doc/dot/f_0.dot +23 -1
  178. data/doc/dot/f_0.png +0 -0
  179. data/doc/dot/m_0_0.png +0 -0
  180. data/doc/dot/m_0_1.dot +13 -0
  181. data/doc/dot/m_0_1.png +0 -0
  182. data/doc/files/lib/long-decimal_rb.html +15 -13
  183. data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
  184. data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
  185. data/doc/fr_class_index.html +2 -0
  186. data/doc/fr_method_index.html +131 -124
  187. data/lib/long-decimal.rb +373 -49
  188. data/test/testlongdecimal.rb +689 -7
  189. data/test/testlongdeclib.rb +51 -11
  190. data/test/testrandlib.rb +23 -7
  191. data/test/testrandom.rb +4 -4
  192. data/test/testrandpower.rb +11 -9
  193. metadata +48 -3
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # library for testlongdecimal.rb
4
4
  #
5
- # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testlongdeclib.rb,v 1.15 2006/05/01 12:22:12 bk1 Exp $
6
- # CVS-Label: $Name: ALPHA_01_01 $
5
+ # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testlongdeclib.rb,v 1.18 2007/06/19 01:36:23 bk1 Exp $
6
+ # CVS-Label: $Name: ALPHA_01_02 $
7
7
  # Author: $Author: bk1 $ (Karl Brodowsky)
8
8
  #
9
9
 
@@ -14,7 +14,7 @@ load "lib/long-decimal.rb"
14
14
  #
15
15
  module TestLongDecHelper
16
16
 
17
- @RCS_ID='-$Id: testlongdeclib.rb,v 1.15 2006/05/01 12:22:12 bk1 Exp $-'
17
+ @RCS_ID='-$Id: testlongdeclib.rb,v 1.18 2007/06/19 01:36:23 bk1 Exp $-'
18
18
 
19
19
 
20
20
  #
@@ -146,6 +146,7 @@ module TestLongDecHelper
146
146
  # assert_equal(yd, yu, "the result yd/yu should not depend on the internal rounding mode x0=#{x0} x=#{x} p=#{prec} d=#{(yd-yu).to_f.to_s}")
147
147
  # assert_equal(y, yu, "the result y/yu should not depend on the internal rounding mode x0=#{x0} x=#{x} p=#{prec} d=#{(y -yu).to_f.to_s}")
148
148
  assert_small_interval(yd, yu, y, "the result y/yu should not depend on the internal rounding mode x0=#{x0} x=#{x} p=#{prec} d=#{(yd-yu).to_f.to_s}")
149
+ y
149
150
  end
150
151
 
151
152
  #
@@ -216,6 +217,7 @@ module TestLongDecHelper
216
217
  delta = z.unit * df
217
218
  assert((x - z).abs <= delta, "x=#{x.to_s} and z=#{z.to_s} should be almost equal (#{(x-z).abs.inspect} < d=#{delta.inspect} y=#{y.to_s} lprec=#{lprec} prec=#{prec})")
218
219
  end
220
+ y
219
221
 
220
222
  end
221
223
 
@@ -264,6 +266,7 @@ module TestLongDecHelper
264
266
  delta = z.unit * df
265
267
  assert((x - z).abs <= delta, "x=#{x.to_s} and z=#{z.to_s} should be almost equal (#{(x-z).abs.inspect} < d=#{delta.inspect} y=#{y.to_s} lprec=#{lprec} prec=#{prec})")
266
268
  end
269
+ y
267
270
 
268
271
  end
269
272
 
@@ -313,6 +316,31 @@ module TestLongDecHelper
313
316
  assert((zf - zz).abs < [ z.unit.to_f, zf.abs / 1e9 ].max, "zf=#{zf.to_s} and zz=#{zz.to_s} should be almost equal x=#{x} y=#{y} z=#{z} zz=#{zz}")
314
317
  end
315
318
 
319
+ #
320
+ # helper method for test_lm_power_yint
321
+ # tests if exp(x) with precision prec is calculated correctly
322
+ #
323
+ def check_power_yhalfint(x, y2, prec)
324
+
325
+ print "."
326
+ $stdout.flush
327
+
328
+ y2i = y2.to_i
329
+ x = x.to_ld
330
+ y = LongDecimal("0.5") * y2i
331
+
332
+ z = LongMath.power(x, y, prec, LongMath::ROUND_HALF_UP)
333
+ zz = LongMath.sqrt(x ** y2i, prec, LongMath::ROUND_HALF_UP)
334
+ assert_equal(z, zz, "power with ** or power-method x=#{x} y=#{y} z=#{z} zz=#{zz}")
335
+ zz = LongMath.power_internal(x, y, prec)
336
+ assert((zz - z).abs <= z.unit, "power with and without optimizations x=#{x} y=#{y} z=#{z} zz=#{zz}")
337
+
338
+ zz = (x.to_f) ** (y.to_f)
339
+ zf = z.to_f
340
+ # assert((zf - zz).abs / [zf.abs, zz.abs, Float::MIN].max < 1e-9, "z=#{zf.to_s} and zz=#{zz.to_s} should be almost equal x=#{x} y=#{y} z=#{z} zz=#{zz}")
341
+ assert((zf - zz).abs < [ z.unit.to_f, zf.abs / 1e9 ].max, "zf=#{zf.to_s} and zz=#{zz.to_s} should be almost equal x=#{x} y=#{y} z=#{z} zz=#{zz}")
342
+ end
343
+
316
344
  #
317
345
  # helper method for test_log
318
346
  # tests if log(x) with precision prec is calculated correctly
@@ -399,8 +427,8 @@ module TestLongDecHelper
399
427
  def check_power_floated(x, y, prec)
400
428
 
401
429
  print "."
402
- # print("\nstart: check_power_floated: x=#{x} y=#{y} prec=#{prec}")
403
- # t0 = Time.new
430
+ t0 = Time.new
431
+ # print("\nstart: check_power_floated: x=#{x} y=#{y} prec=#{prec} t0=#{t0} ")
404
432
  $stdout.flush
405
433
 
406
434
  # make sure x and y are LongDecimal
@@ -410,13 +438,26 @@ module TestLongDecHelper
410
438
  y = y.to_ld
411
439
  # calculate z = x**y
412
440
  z = LongMath.power(x, y, prec)
441
+ # puts("z=#{z}")
413
442
 
414
- if (z.abs < LongMath::MAX_FLOATABLE)
443
+ if (z.abs < LongMath::MAX_FLOATABLE && (x - 1).abs*1000000000 > 1)
415
444
  # compare y against w = x**y calculated using regular floating point arithmetic
416
- w = (x.to_f) ** (y.to_f)
445
+ xf = x.to_f
446
+ yf = y.to_f
447
+ wf = (xf) ** (yf)
417
448
  zf = z.to_f
418
- # assert((zf - w).abs / [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}")
419
- assert((zf - w).abs <= [ z.unit, zf.abs / 1e9 ].max, "z=#{zf.to_s} and w=#{w.to_s} should be almost equal x=#{x} y=#{y}")
449
+ # puts("zf=#{zf} w=#{w}")
450
+ # assert((zf - w).abs / [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} prec=#{prec}")
451
+ qf = 1e9
452
+ delta = [ z.unit, zf.abs / qf ].max
453
+ if (yf.abs > 1)
454
+ l = Math.log(yf.abs)
455
+ if (l > 1)
456
+ delta *= l
457
+ end
458
+ end
459
+ diff = (zf - wf).abs
460
+ assert(diff <= delta, "zf=#{zf.to_s} and wf=#{wf.to_s} should be almost equal x=#{x} y=#{y} delta=#{delta} l=#{l} diff=#{diff} prec=#{prec}")
420
461
  end
421
462
 
422
463
  # check by taking log(z) = y * log(x)
@@ -445,7 +486,6 @@ module TestLongDecHelper
445
486
  yv = (y*v).round_to_scale(lprec, LongDecimal::ROUND_HALF_DOWN)
446
487
  assert((u - yv).abs <= unit, "u=#{u} and yv=y*v=#{yv} should be almost equal (unit=#{unit} x=#{x.to_s} y=#{y.to_s} z=#{z.to_s} u=#{u.to_s} v=#{v.to_s} lprec=#{lprec} prec=#{prec})")
447
488
  end
448
- # puts("ok check_power_floated: x=#{x} y=#{y} prec=#{prec} t=#{Time.new - t0}\n")
449
489
 
450
490
  end
451
491
 
@@ -510,7 +550,7 @@ module TestLongDecHelper
510
550
  assert((x - z).abs <= delta, "x=#{x.to_s} and z=#{z.to_s} should be almost equal (y=#{y.to_s} eprec=#{eprec} prec=#{prec} delta=#{delta})")
511
551
  # 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})")
512
552
  end
513
-
553
+
514
554
  return y
515
555
 
516
556
  end
data/test/testrandlib.rb CHANGED
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # testrandlib.rb -- runit test for long-decimal.rb
4
4
  #
5
- # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testrandlib.rb,v 1.3 2006/04/30 20:49:54 bk1 Exp $
6
- # CVS-Label: $Name: ALPHA_01_01 $
5
+ # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testrandlib.rb,v 1.7 2006/05/07 20:00:24 bk1 Exp $
6
+ # CVS-Label: $Name: ALPHA_01_02 $
7
7
  # Author: $Author: bk1 $ (Karl Brodowsky)
8
8
  #
9
9
 
@@ -14,7 +14,7 @@ require "crypt/ISAAC"
14
14
  #
15
15
  module TestRandomHelper
16
16
 
17
- @RCS_ID='-$Id: testrandlib.rb,v 1.3 2006/04/30 20:49:54 bk1 Exp $-'
17
+ @RCS_ID='-$Id: testrandlib.rb,v 1.7 2006/05/07 20:00:24 bk1 Exp $-'
18
18
 
19
19
  @@r1 = Crypt::ISAAC.new
20
20
  @@r2 = Crypt::ISAAC.new
@@ -24,9 +24,10 @@ module TestRandomHelper
24
24
  def arr_with_sq(arr)
25
25
  result = arr.map do |x|
26
26
  if (x >= 0) then
27
- [ LongMath.sqrt(x, x.scale, LongMath::ROUND_HALF_UP), x, x.square ]
27
+ r = LongMath.sqrt(x, x.scale, LongMath::ROUND_HALF_UP)
28
+ [ r, x, r*x, x.square ]
28
29
  else
29
- x
30
+ x
30
31
  end
31
32
  end
32
33
  result.flatten
@@ -72,13 +73,28 @@ module TestRandomHelper
72
73
  x5 = @@r4.rand(1000)
73
74
  x6 = @@r4.rand(100)+5
74
75
  xs = LongDecimal(x1, x2) + LongDecimal(x3, x4) + LongDecimal(x5, x6)
75
- xm = 1 + xs
76
+ xt = (xs / LongMath.pi(xs.scale)).to_ld(xs.scale*2)
77
+ xu = 1 + xs
78
+ xv = 1 + xt
79
+ xw = 2 + xs
80
+ xe = LongMath.exp(1, xs.scale) + xs
81
+ xp = LongMath.pi(xs.scale) + xs
82
+ xn = 10 + xs
76
83
  xb = x0 + xs
84
+ xg = LongMath::MAX_EXP_ABLE - xs
85
+ xh = LongMath::MAX_EXP_ABLE + xs
77
86
  eprec = @@r1.rand(120)
78
87
  lprec = eprec+1
79
88
  sprec = eprec+((xb.scale+1)>>1)
80
89
  pprec = lprec >> 1
81
- arr = arr_with_neg(arr_with_inv(arr_with_sq([xb, xm, xs]))).sort.uniq
90
+ arr1 = [ xt, xs, xu, xv, xw, xe, xp, xn, xb, xg, xh ]
91
+ # f = LongDecimal("0.25")
92
+ # arr2 = (0..8).map do |j|
93
+ # ff = f*j
94
+ # [ ff + xs, ff**5 + xs ]
95
+ # end
96
+ # arr3 = [ arr1, arr2 ].flatten
97
+ arr = arr_with_neg(arr_with_inv(arr_with_sq(arr1))).sort.uniq
82
98
  return [ arr, eprec, lprec, sprec, pprec, xb.scale ]
83
99
  end
84
100
 
data/test/testrandom.rb CHANGED
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # testrandom.rb -- runit test for long-decimal.rb
4
4
  #
5
- # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testrandom.rb,v 1.10 2006/04/30 20:49:54 bk1 Exp $
6
- # CVS-Label: $Name: ALPHA_01_01 $
5
+ # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testrandom.rb,v 1.12 2006/05/05 22:15:36 bk1 Exp $
6
+ # CVS-Label: $Name: ALPHA_01_02 $
7
7
  # Author: $Author: bk1 $ (Karl Brodowsky)
8
8
  #
9
9
 
@@ -22,7 +22,7 @@ class TestRandom_class < RUNIT::TestCase
22
22
  include TestLongDecHelper
23
23
  include TestRandomHelper
24
24
 
25
- @RCS_ID='-$Id: testrandom.rb,v 1.10 2006/04/30 20:49:54 bk1 Exp $-'
25
+ @RCS_ID='-$Id: testrandom.rb,v 1.12 2006/05/05 22:15:36 bk1 Exp $-'
26
26
 
27
27
  # for how many seconds should this test run? change to different
28
28
  # value on demand
@@ -32,7 +32,7 @@ class TestRandom_class < RUNIT::TestCase
32
32
  arr.each do |x|
33
33
  @scnt += 1
34
34
  puts("\ncnt=#{cnt} scnt=#{@scnt} x=#{x} ep=#{eprec} lp=#{lprec} sp=#{sprec} pp=#{pprec}\n")
35
- if (x.abs <= LongMath::MAX_EXP_ABLE)
35
+ if (x <= LongMath::MAX_EXP_ABLE) then
36
36
  check_exp_floated(x, eprec)
37
37
  check_exp2_floated(x, pprec)
38
38
  check_exp10_floated(x, pprec)
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # testrandpower.rb -- runit test for long-decimal.rb
4
4
  #
5
- # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testrandpower.rb,v 1.7 2006/05/01 12:22:12 bk1 Exp $
6
- # CVS-Label: $Name: ALPHA_01_01 $
5
+ # CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/test/testrandpower.rb,v 1.9 2006/05/11 20:57:22 bk1 Exp $
6
+ # CVS-Label: $Name: ALPHA_01_02 $
7
7
  # Author: $Author: bk1 $ (Karl Brodowsky)
8
8
  #
9
9
 
@@ -22,7 +22,7 @@ class TestRandomPower_class < RUNIT::TestCase
22
22
  include TestLongDecHelper
23
23
  include TestRandomHelper
24
24
 
25
- @RCS_ID='-$Id: testrandpower.rb,v 1.7 2006/05/01 12:22:12 bk1 Exp $-'
25
+ @RCS_ID='-$Id: testrandpower.rb,v 1.9 2006/05/11 20:57:22 bk1 Exp $-'
26
26
 
27
27
  # for how many seconds should this test run? change to different
28
28
  # value on demand
@@ -41,6 +41,7 @@ class TestRandomPower_class < RUNIT::TestCase
41
41
  break if d >= @@duration
42
42
  xarr, eprec1, lprec1, sprec1, pprec1, xs = random_arr
43
43
  yarr, eprec2, lprec2, sprec2, pprec2, ys = random_arr
44
+
44
45
  prec = (pprec1+pprec2) >> 1
45
46
  xarr.each do |x|
46
47
  puts(" t=#{Time.new-t1} x=#{x}: ")
@@ -48,15 +49,16 @@ class TestRandomPower_class < RUNIT::TestCase
48
49
  # next if (x < 1.1)
49
50
  # next if (x < 1)
50
51
  # next if (x < 0.99)
52
+ next if x.abs > LongMath::MAX_FLOATABLE || (1/x).abs > LongMath::MAX_FLOATABLE
51
53
  yarr.each do |y|
52
- # next if x < 0.001 && y < 0
53
- next if y.abs > LongMath::MAX_EXP_ABLE * 2
54
- next if ((1+x.to_i) ** y.to_i.abs).abs > LongMath::MAX_FLOATABLE
55
- next if ((1+(1/x).to_i) ** y.to_i.abs).abs > LongMath::MAX_FLOATABLE
56
- next if (Math.log(x) * y.to_f).abs > LongMath::MAX_EXP_ABLE * 2
57
54
  puts("\ncnt=#{cnt} scnt=#{scnt} x=#{x} y=#{y} scx=#{x.scale} scy=#{y.scale} prec=#{prec}")
55
+ # next if x < 0.001 && y < 0
56
+ next if x > 1 && y > LongMath::MAX_EXP_ABLE * 2
57
+ next if x < 1 && y < -LongMath::MAX_EXP_ABLE * 2
58
+ next if Math.log(1+x.to_i) * y.to_i > LongMath::MAX_EXP_ABLE
59
+ next if -Math.log(1+(1/x).to_i) * y.to_i > LongMath::MAX_EXP_ABLE
60
+ next if (Math.log(x.to_f) * y.to_f).abs > LongMath::MAX_EXP_ABLE * 2
58
61
  scnt += 1
59
- # puts(" t=#{Time.new-t1} x=#{x} y=#{y}: ")
60
62
  check_power_floated(x, y, prec)
61
63
  end
62
64
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: long-decimal
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.01.01
7
- date: 2006-05-01 00:00:00 +02:00
6
+ version: 0.01.02
7
+ date: 2007-07-13 00:00:00 +02:00
8
8
  summary: LongDecimal for numbers with fixed point
9
9
  require_paths:
10
10
  - lib
@@ -25,6 +25,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
25
  platform: ruby
26
26
  signing_key:
27
27
  cert_chain:
28
+ post_install_message:
28
29
  authors:
29
30
  - Karl Brodowsky
30
31
  files:
@@ -58,6 +59,8 @@ files:
58
59
  - doc/files/lib/long-decimal_rb.src/M000001.html
59
60
  - doc/files/lib/long-decimal_rb.src/M000002.html
60
61
  - doc/classes/LongDecimal.src
62
+ - doc/classes/Integer.src
63
+ - doc/classes/Integer.html
61
64
  - doc/classes/LongMath.html
62
65
  - doc/classes/Numeric.src
63
66
  - doc/classes/Rational.src
@@ -112,10 +115,16 @@ files:
112
115
  - doc/classes/LongDecimal.src/M000044.html
113
116
  - doc/classes/LongDecimal.src/M000103.html
114
117
  - doc/classes/LongDecimal.src/M000045.html
118
+ - doc/classes/LongDecimal.src/M000104.html
115
119
  - doc/classes/LongDecimal.src/M000046.html
120
+ - doc/classes/LongDecimal.src/M000105.html
116
121
  - doc/classes/LongDecimal.src/M000047.html
122
+ - doc/classes/LongDecimal.src/M000106.html
117
123
  - doc/classes/LongDecimal.src/M000048.html
124
+ - doc/classes/LongDecimal.src/M000107.html
118
125
  - doc/classes/LongDecimal.src/M000049.html
126
+ - doc/classes/LongDecimal.src/M000108.html
127
+ - doc/classes/LongDecimal.src/M000109.html
119
128
  - doc/classes/LongDecimal.src/M000050.html
120
129
  - doc/classes/LongDecimal.src/M000051.html
121
130
  - doc/classes/LongDecimal.src/M000052.html
@@ -142,15 +151,22 @@ files:
142
151
  - doc/classes/LongDecimal.src/M000073.html
143
152
  - doc/classes/LongDecimal.src/M000074.html
144
153
  - doc/classes/LongDecimal.src/M000075.html
154
+ - doc/classes/Integer.src/M000036.html
155
+ - doc/classes/Integer.src/M000039.html
145
156
  - doc/classes/Numeric.src/M000100.html
146
157
  - doc/classes/Numeric.src/M000102.html
147
158
  - doc/classes/Numeric.src/M000103.html
148
159
  - doc/classes/Numeric.src/M000104.html
149
160
  - doc/classes/Numeric.src/M000105.html
161
+ - doc/classes/Numeric.src/M000106.html
162
+ - doc/classes/Numeric.src/M000110.html
163
+ - doc/classes/Numeric.src/M000111.html
150
164
  - doc/classes/Rational.src/M000101.html
151
165
  - doc/classes/Rational.src/M000103.html
152
166
  - doc/classes/Rational.src/M000104.html
153
167
  - doc/classes/Rational.src/M000106.html
168
+ - doc/classes/Rational.src/M000107.html
169
+ - doc/classes/Rational.src/M000112.html
154
170
  - doc/classes/LongDecimalQuot.src/M000008.html
155
171
  - doc/classes/LongDecimalQuot.src/M000009.html
156
172
  - doc/classes/LongDecimalQuot.src/M000010.html
@@ -201,12 +217,18 @@ files:
201
217
  - doc/classes/LongDecimalBase.src/M000115.html
202
218
  - doc/classes/LongDecimalBase.src/M000116.html
203
219
  - doc/classes/LongDecimalBase.src/M000117.html
220
+ - doc/classes/LongDecimalBase.src/M000118.html
221
+ - doc/classes/LongDecimalBase.src/M000121.html
222
+ - doc/classes/LongDecimalBase.src/M000122.html
223
+ - doc/classes/LongDecimalBase.src/M000123.html
204
224
  - doc/classes/LongMath/CacheKey.html
205
225
  - doc/classes/LongMath/CacheKey.src
206
226
  - doc/classes/LongMath/CacheKey.src/M000140.html
207
227
  - doc/classes/LongMath/CacheKey.src/M000145.html
208
228
  - doc/classes/LongMath/CacheKey.src/M000147.html
209
229
  - doc/classes/LongMath/CacheKey.src/M000149.html
230
+ - doc/classes/LongMath/CacheKey.src/M000155.html
231
+ - doc/classes/LongMath/CacheKey.src/M000160.html
210
232
  - doc/classes/LongMath.src/M000135.html
211
233
  - doc/classes/LongMath.src/M000136.html
212
234
  - doc/classes/LongMath.src/M000137.html
@@ -221,6 +243,17 @@ files:
221
243
  - doc/classes/LongMath.src/M000146.html
222
244
  - doc/classes/LongMath.src/M000147.html
223
245
  - doc/classes/LongMath.src/M000148.html
246
+ - doc/classes/LongMath.src/M000149.html
247
+ - doc/classes/LongMath.src/M000150.html
248
+ - doc/classes/LongMath.src/M000151.html
249
+ - doc/classes/LongMath.src/M000152.html
250
+ - doc/classes/LongMath.src/M000153.html
251
+ - doc/classes/LongMath.src/M000154.html
252
+ - doc/classes/LongMath.src/M000155.html
253
+ - doc/classes/LongMath.src/M000156.html
254
+ - doc/classes/LongMath.src/M000157.html
255
+ - doc/classes/LongMath.src/M000158.html
256
+ - doc/classes/LongMath.src/M000159.html
224
257
  - doc/classes/LongMath.src/M000112.html
225
258
  - doc/classes/LongMath.src/M000113.html
226
259
  - doc/classes/LongMath.src/M000114.html
@@ -245,6 +278,8 @@ files:
245
278
  - doc/classes/LongMath.src/M000133.html
246
279
  - doc/classes/LongMath.src/M000134.html
247
280
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src
281
+ - doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src
282
+ - doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.html
248
283
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.html
249
284
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000135.html
250
285
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000137.html
@@ -258,6 +293,16 @@ files:
258
293
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000150.html
259
294
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000151.html
260
295
  - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000152.html
296
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000156.html
297
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000157.html
298
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000158.html
299
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000159.html
300
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000161.html
301
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000162.html
302
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000163.html
303
+ - doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000164.html
304
+ - doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000165.html
305
+ - doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000166.html
261
306
  - lib/long-decimal.rb
262
307
  - test/testlongdecimal.rb
263
308
  - test/testrandpower.rb