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.
- data/README +17 -94
- data/VERSION +1 -1
- data/doc/classes/Integer.html +239 -0
- data/doc/classes/Integer.src/M000036.html +18 -0
- data/doc/classes/Integer.src/M000039.html +145 -0
- data/doc/classes/LongDecimal.html +453 -399
- data/doc/classes/LongDecimal.src/M000040.html +4 -4
- data/doc/classes/LongDecimal.src/M000041.html +4 -4
- data/doc/classes/LongDecimal.src/M000042.html +4 -6
- data/doc/classes/LongDecimal.src/M000043.html +4 -106
- data/doc/classes/LongDecimal.src/M000044.html +4 -21
- data/doc/classes/LongDecimal.src/M000045.html +4 -11
- data/doc/classes/LongDecimal.src/M000046.html +6 -27
- data/doc/classes/LongDecimal.src/M000047.html +103 -16
- data/doc/classes/LongDecimal.src/M000048.html +21 -4
- data/doc/classes/LongDecimal.src/M000049.html +10 -14
- data/doc/classes/LongDecimal.src/M000050.html +22 -36
- data/doc/classes/LongDecimal.src/M000051.html +34 -4
- data/doc/classes/LongDecimal.src/M000052.html +17 -6
- data/doc/classes/LongDecimal.src/M000053.html +4 -6
- data/doc/classes/LongDecimal.src/M000054.html +15 -4
- data/doc/classes/LongDecimal.src/M000055.html +44 -12
- data/doc/classes/LongDecimal.src/M000056.html +4 -7
- data/doc/classes/LongDecimal.src/M000057.html +8 -4
- data/doc/classes/LongDecimal.src/M000058.html +6 -15
- data/doc/classes/LongDecimal.src/M000059.html +4 -13
- data/doc/classes/LongDecimal.src/M000060.html +15 -4
- data/doc/classes/LongDecimal.src/M000061.html +7 -5
- data/doc/classes/LongDecimal.src/M000062.html +4 -4
- data/doc/classes/LongDecimal.src/M000063.html +15 -5
- data/doc/classes/LongDecimal.src/M000064.html +13 -5
- data/doc/classes/LongDecimal.src/M000065.html +4 -4
- data/doc/classes/LongDecimal.src/M000067.html +4 -8
- data/doc/classes/LongDecimal.src/M000068.html +5 -9
- data/doc/classes/LongDecimal.src/M000069.html +5 -9
- data/doc/classes/LongDecimal.src/M000070.html +4 -9
- data/doc/classes/LongDecimal.src/M000071.html +4 -4
- data/doc/classes/LongDecimal.src/M000072.html +6 -17
- data/doc/classes/LongDecimal.src/M000073.html +7 -7
- data/doc/classes/LongDecimal.src/M000074.html +7 -7
- data/doc/classes/LongDecimal.src/M000075.html +7 -19
- data/doc/classes/LongDecimal.src/M000076.html +4 -8
- data/doc/classes/LongDecimal.src/M000077.html +19 -5
- data/doc/classes/LongDecimal.src/M000078.html +7 -7
- data/doc/classes/LongDecimal.src/M000079.html +7 -7
- data/doc/classes/LongDecimal.src/M000080.html +19 -7
- data/doc/classes/LongDecimal.src/M000081.html +8 -4
- data/doc/classes/LongDecimal.src/M000082.html +5 -7
- data/doc/classes/LongDecimal.src/M000083.html +8 -6
- data/doc/classes/LongDecimal.src/M000084.html +9 -4
- data/doc/classes/LongDecimal.src/M000085.html +9 -4
- data/doc/classes/LongDecimal.src/M000086.html +4 -9
- data/doc/classes/LongDecimal.src/M000087.html +6 -8
- data/doc/classes/LongDecimal.src/M000088.html +7 -5
- data/doc/classes/LongDecimal.src/M000089.html +4 -9
- data/doc/classes/LongDecimal.src/M000090.html +4 -4
- data/doc/classes/LongDecimal.src/M000091.html +9 -4
- data/doc/classes/LongDecimal.src/M000092.html +9 -4
- data/doc/classes/LongDecimal.src/M000093.html +5 -4
- data/doc/classes/LongDecimal.src/M000094.html +7 -57
- data/doc/classes/LongDecimal.src/M000095.html +4 -4
- data/doc/classes/LongDecimal.src/M000096.html +4 -4
- data/doc/classes/LongDecimal.src/M000097.html +4 -5
- data/doc/classes/LongDecimal.src/M000098.html +4 -5
- data/doc/classes/LongDecimal.src/M000099.html +59 -5
- data/doc/classes/LongDecimal.src/M000100.html +4 -5
- data/doc/classes/LongDecimal.src/M000101.html +4 -4
- data/doc/classes/LongDecimal.src/M000104.html +19 -0
- data/doc/classes/LongDecimal.src/M000105.html +19 -0
- data/doc/classes/LongDecimal.src/M000106.html +18 -0
- data/doc/classes/LongDecimal.src/M000107.html +18 -0
- data/doc/classes/LongDecimal.src/M000108.html +18 -0
- data/doc/classes/LongDecimal.src/M000109.html +18 -0
- data/doc/classes/LongDecimalBase.html +69 -66
- data/doc/classes/LongDecimalBase.src/M000113.html +4 -9
- data/doc/classes/LongDecimalBase.src/M000114.html +4 -5
- data/doc/classes/LongDecimalBase.src/M000115.html +4 -9
- data/doc/classes/LongDecimalBase.src/M000116.html +4 -9
- data/doc/classes/LongDecimalBase.src/M000117.html +4 -5
- data/doc/classes/LongDecimalBase.src/M000118.html +23 -0
- data/doc/classes/LongDecimalBase.src/M000121.html +23 -0
- data/doc/classes/LongDecimalBase.src/M000122.html +19 -0
- data/doc/classes/LongDecimalBase.src/M000123.html +18 -0
- data/doc/classes/LongDecimalQuot.html +33 -27
- data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000011.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000023.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000024.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000030.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000031.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000034.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000035.html +1 -1
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +25 -24
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000156.html +22 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000157.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000158.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000159.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000161.html +25 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000162.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000163.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000164.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.html +178 -0
- data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000165.html +25 -0
- data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000166.html +18 -0
- data/doc/classes/LongDecimalRoundingMode.html +41 -4
- data/doc/classes/LongMath/CacheKey.html +10 -10
- data/doc/classes/LongMath/CacheKey.src/M000155.html +36 -0
- data/doc/classes/LongMath/CacheKey.src/M000160.html +36 -0
- data/doc/classes/LongMath.html +246 -235
- data/doc/classes/LongMath.src/M000124.html +5 -18
- data/doc/classes/LongMath.src/M000125.html +4 -18
- data/doc/classes/LongMath.src/M000126.html +4 -5
- data/doc/classes/LongMath.src/M000127.html +5 -29
- data/doc/classes/LongMath.src/M000128.html +4 -5
- data/doc/classes/LongMath.src/M000129.html +14 -53
- data/doc/classes/LongMath.src/M000130.html +17 -20
- data/doc/classes/LongMath.src/M000131.html +5 -36
- data/doc/classes/LongMath.src/M000132.html +29 -6
- data/doc/classes/LongMath.src/M000133.html +5 -33
- data/doc/classes/LongMath.src/M000134.html +47 -41
- data/doc/classes/LongMath.src/M000135.html +21 -7
- data/doc/classes/LongMath.src/M000136.html +36 -4
- data/doc/classes/LongMath.src/M000137.html +6 -4
- data/doc/classes/LongMath.src/M000138.html +31 -70
- data/doc/classes/LongMath.src/M000139.html +45 -38
- data/doc/classes/LongMath.src/M000140.html +7 -4
- data/doc/classes/LongMath.src/M000141.html +4 -4
- data/doc/classes/LongMath.src/M000142.html +4 -6
- data/doc/classes/LongMath.src/M000143.html +67 -14
- data/doc/classes/LongMath.src/M000144.html +39 -14
- data/doc/classes/LongMath.src/M000145.html +4 -44
- data/doc/classes/LongMath.src/M000146.html +5 -339
- data/doc/classes/LongMath.src/M000147.html +6 -25
- data/doc/classes/LongMath.src/M000148.html +14 -75
- data/doc/classes/LongMath.src/M000149.html +33 -0
- data/doc/classes/LongMath.src/M000150.html +58 -0
- data/doc/classes/LongMath.src/M000151.html +406 -0
- data/doc/classes/LongMath.src/M000152.html +63 -0
- data/doc/classes/LongMath.src/M000153.html +117 -0
- data/doc/classes/LongMath.src/M000154.html +150 -0
- data/doc/classes/LongMath.src/M000155.html +63 -0
- data/doc/classes/LongMath.src/M000156.html +18 -0
- data/doc/classes/LongMath.src/M000157.html +19 -0
- data/doc/classes/LongMath.src/M000158.html +18 -0
- data/doc/classes/LongMath.src/M000159.html +19 -0
- data/doc/classes/Numeric.html +23 -21
- data/doc/classes/Numeric.src/M000106.html +18 -0
- data/doc/classes/Numeric.src/M000110.html +23 -0
- data/doc/classes/Numeric.src/M000111.html +18 -0
- data/doc/classes/Rational.html +18 -16
- data/doc/classes/Rational.src/M000107.html +23 -0
- data/doc/classes/Rational.src/M000112.html +23 -0
- data/doc/created.rid +1 -1
- data/doc/dot/f_0.dot +23 -1
- data/doc/dot/f_0.png +0 -0
- data/doc/dot/m_0_0.png +0 -0
- data/doc/dot/m_0_1.dot +13 -0
- data/doc/dot/m_0_1.png +0 -0
- data/doc/files/lib/long-decimal_rb.html +15 -13
- data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
- data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
- data/doc/fr_class_index.html +2 -0
- data/doc/fr_method_index.html +131 -124
- data/lib/long-decimal.rb +373 -49
- data/test/testlongdecimal.rb +689 -7
- data/test/testlongdeclib.rb +51 -11
- data/test/testrandlib.rb +23 -7
- data/test/testrandom.rb +4 -4
- data/test/testrandpower.rb +11 -9
- metadata +48 -3
data/test/testlongdeclib.rb
CHANGED
|
@@ -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.
|
|
6
|
-
# CVS-Label: $Name:
|
|
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.
|
|
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
|
-
|
|
403
|
-
# t0
|
|
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
|
-
|
|
445
|
+
xf = x.to_f
|
|
446
|
+
yf = y.to_f
|
|
447
|
+
wf = (xf) ** (yf)
|
|
417
448
|
zf = z.to_f
|
|
418
|
-
#
|
|
419
|
-
assert((zf - w).abs
|
|
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.
|
|
6
|
-
# CVS-Label: $Name:
|
|
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.
|
|
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
|
-
|
|
27
|
+
r = LongMath.sqrt(x, x.scale, LongMath::ROUND_HALF_UP)
|
|
28
|
+
[ r, x, r*x, x.square ]
|
|
28
29
|
else
|
|
29
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
6
|
-
# CVS-Label: $Name:
|
|
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.
|
|
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
|
|
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)
|
data/test/testrandpower.rb
CHANGED
|
@@ -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.
|
|
6
|
-
# CVS-Label: $Name:
|
|
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.
|
|
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.
|
|
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.
|
|
7
|
-
date:
|
|
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
|