rbs 4.0.0.dev.4 → 4.0.0.dev.5
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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +11 -8
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +17 -34
- data/.github/workflows/typecheck.yml +2 -2
- data/.github/workflows/valgrind.yml +42 -0
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +1 -1
- data/README.md +1 -1
- data/Rakefile +32 -5
- data/config.yml +46 -0
- data/core/array.rbs +96 -46
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +2 -2
- data/core/comparable.rbs +13 -6
- data/core/complex.rbs +55 -41
- data/core/dir.rbs +4 -4
- data/core/encoding.rbs +7 -10
- data/core/enumerable.rbs +90 -3
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +63 -1
- data/core/errno.rbs +8 -0
- data/core/errors.rbs +28 -1
- data/core/exception.rbs +2 -2
- data/core/fiber.rbs +40 -20
- data/core/file.rbs +108 -78
- data/core/file_test.rbs +1 -1
- data/core/float.rbs +225 -69
- data/core/gc.rbs +417 -281
- data/core/hash.rbs +1023 -727
- data/core/integer.rbs +104 -110
- data/core/io/buffer.rbs +21 -10
- data/core/io/wait.rbs +11 -33
- data/core/io.rbs +82 -19
- data/core/kernel.rbs +70 -59
- data/core/marshal.rbs +1 -1
- data/core/match_data.rbs +1 -1
- data/core/math.rbs +42 -3
- data/core/method.rbs +63 -27
- data/core/module.rbs +103 -26
- data/core/nil_class.rbs +3 -3
- data/core/numeric.rbs +43 -35
- data/core/object.rbs +3 -3
- data/core/object_space.rbs +21 -15
- data/core/pathname.rbs +1272 -0
- data/core/proc.rbs +30 -25
- data/core/process.rbs +4 -2
- data/core/ractor.rbs +361 -509
- data/core/random.rbs +17 -0
- data/core/range.rbs +113 -16
- data/core/rational.rbs +56 -85
- data/core/rbs/unnamed/argf.rbs +2 -2
- data/core/rbs/unnamed/env_class.rbs +1 -1
- data/core/rbs/unnamed/random.rbs +4 -113
- data/core/regexp.rbs +25 -20
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +6 -4
- data/core/rubygems/errors.rbs +3 -70
- data/core/rubygems/rubygems.rbs +11 -79
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +488 -359
- data/core/signal.rbs +24 -14
- data/core/string.rbs +3171 -1241
- data/core/struct.rbs +1 -1
- data/core/symbol.rbs +17 -11
- data/core/thread.rbs +95 -33
- data/core/time.rbs +35 -9
- data/core/trace_point.rbs +7 -4
- data/core/unbound_method.rbs +14 -6
- data/docs/aliases.md +79 -0
- data/docs/collection.md +2 -2
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +470 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +33 -4
- data/docs/type_fingerprint.md +21 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +77 -3
- data/ext/rbs_extension/ast_translation.h +3 -0
- data/ext/rbs_extension/class_constants.c +8 -2
- data/ext/rbs_extension/class_constants.h +4 -0
- data/ext/rbs_extension/extconf.rb +5 -1
- data/ext/rbs_extension/legacy_location.c +5 -5
- data/ext/rbs_extension/main.c +37 -20
- data/include/rbs/ast.h +85 -38
- data/include/rbs/defines.h +27 -0
- data/include/rbs/lexer.h +30 -11
- data/include/rbs/parser.h +6 -6
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +137 -0
- data/lib/rbs/ast/ruby/comment_block.rb +24 -0
- data/lib/rbs/ast/ruby/declarations.rb +198 -3
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/members.rb +159 -1
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +20 -15
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -51
- data/lib/rbs/cli.rb +52 -19
- data/lib/rbs/collection/config/lockfile_generator.rb +8 -0
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +20 -0
- data/lib/rbs/definition_builder.rb +91 -2
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +227 -74
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -7
- data/lib/rbs/inline_parser.rb +341 -5
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/parser_aux.rb +2 -2
- data/lib/rbs/prototype/rb.rb +2 -2
- data/lib/rbs/prototype/rbi.rb +2 -0
- data/lib/rbs/prototype/runtime.rb +8 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +116 -38
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +16 -2
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +27 -27
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -1
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +3 -2
- data/schema/typeParam.json +17 -1
- data/sig/ast/ruby/annotations.rbs +124 -0
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +87 -1
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +13 -4
- data/sig/cli.rbs +18 -18
- data/sig/definition.rbs +6 -1
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -6
- data/sig/inline_parser.rbs +39 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -1
- data/sig/method_builder.rbs +3 -1
- data/sig/method_types.rbs +1 -1
- data/sig/parser.rbs +16 -2
- data/sig/resolver/type_name_resolver.rbs +35 -7
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/types.rbs +4 -4
- data/src/ast.c +80 -1
- data/src/lexer.c +1392 -1313
- data/src/lexer.re +3 -0
- data/src/lexstate.c +58 -37
- data/src/location.c +4 -4
- data/src/parser.c +412 -145
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -71
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -10
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/bigdecimal/0/big_decimal.rbs +100 -82
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +3 -1
- data/stdlib/date/0/date.rbs +67 -59
- data/stdlib/date/0/date_time.rbs +1 -1
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/digest/0/digest.rbs +110 -0
- data/stdlib/erb/0/erb.rbs +737 -347
- data/stdlib/fileutils/0/fileutils.rbs +20 -14
- data/stdlib/forwardable/0/forwardable.rbs +3 -0
- data/stdlib/json/0/json.rbs +82 -28
- data/stdlib/net-http/0/net-http.rbs +3 -0
- data/stdlib/objspace/0/objspace.rbs +9 -27
- data/stdlib/open-uri/0/open-uri.rbs +40 -0
- data/stdlib/open3/0/open3.rbs +459 -1
- data/stdlib/openssl/0/openssl.rbs +331 -228
- data/stdlib/optparse/0/optparse.rbs +8 -3
- data/stdlib/pathname/0/pathname.rbs +9 -1379
- data/stdlib/psych/0/psych.rbs +4 -4
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +2 -2
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +6 -19
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/socket.rbs +13 -1
- data/stdlib/socket/0/tcp_socket.rbs +10 -2
- data/stdlib/stringio/0/stringio.rbs +1176 -85
- data/stdlib/strscan/0/string_scanner.rbs +31 -31
- data/stdlib/tempfile/0/tempfile.rbs +3 -3
- data/stdlib/time/0/time.rbs +1 -1
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +3 -0
- data/stdlib/uri/0/common.rbs +16 -2
- data/stdlib/uri/0/file.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +24 -16
- data/stdlib/uri/0/rfc2396_parser.rbs +6 -7
- data/stdlib/zlib/0/gzip_reader.rbs +2 -2
- data/stdlib/zlib/0/gzip_writer.rbs +1 -1
- data/stdlib/zlib/0/zstream.rbs +1 -0
- metadata +30 -4
|
@@ -609,7 +609,7 @@ class BigDecimal < Numeric
|
|
|
609
609
|
# The quotient q is (a/b).floor, and the modulus is the amount that must be
|
|
610
610
|
# added to q * b to get a.
|
|
611
611
|
#
|
|
612
|
-
def divmod: (Numeric) -> [
|
|
612
|
+
def divmod: (Numeric) -> [ Integer, BigDecimal ]
|
|
613
613
|
|
|
614
614
|
# <!--
|
|
615
615
|
# rdoc-file=ext/bigdecimal/bigdecimal.c
|
|
@@ -783,20 +783,6 @@ class BigDecimal < Numeric
|
|
|
783
783
|
#
|
|
784
784
|
def power: (Numeric n, int prec) -> BigDecimal
|
|
785
785
|
|
|
786
|
-
# <!--
|
|
787
|
-
# rdoc-file=ext/bigdecimal/bigdecimal.c
|
|
788
|
-
# - precs -> array
|
|
789
|
-
# -->
|
|
790
|
-
# Returns an Array of two Integer values that represent platform-dependent
|
|
791
|
-
# internal storage properties.
|
|
792
|
-
#
|
|
793
|
-
# This method is deprecated and will be removed in the future. Instead, use
|
|
794
|
-
# BigDecimal#n_significant_digits for obtaining the number of significant digits
|
|
795
|
-
# in scientific notation, and BigDecimal#precision for obtaining the number of
|
|
796
|
-
# digits in decimal notation.
|
|
797
|
-
#
|
|
798
|
-
def precs: () -> [ Integer, Integer ]
|
|
799
|
-
|
|
800
786
|
# <!--
|
|
801
787
|
# rdoc-file=ext/bigdecimal/bigdecimal.c
|
|
802
788
|
# - quo(value) -> bigdecimal
|
|
@@ -1274,33 +1260,35 @@ class Integer
|
|
|
1274
1260
|
|
|
1275
1261
|
# <!--
|
|
1276
1262
|
# rdoc-file=numeric.c
|
|
1277
|
-
# - self /
|
|
1263
|
+
# - self / other -> numeric
|
|
1278
1264
|
# -->
|
|
1279
|
-
#
|
|
1265
|
+
# Returns the quotient of `self` and `other`.
|
|
1266
|
+
#
|
|
1267
|
+
# For integer `other`, truncates the result to an integer:
|
|
1280
1268
|
#
|
|
1281
|
-
#
|
|
1282
|
-
#
|
|
1283
|
-
#
|
|
1284
|
-
#
|
|
1269
|
+
# 4 / 3 # => 1
|
|
1270
|
+
# 4 / -3 # => -2
|
|
1271
|
+
# -4 / 3 # => -2
|
|
1272
|
+
# -4 / -3 # => 1
|
|
1285
1273
|
#
|
|
1286
|
-
#
|
|
1274
|
+
# For non-integer `other`, returns a non-integer result:
|
|
1287
1275
|
#
|
|
1288
|
-
#
|
|
1289
|
-
#
|
|
1290
|
-
#
|
|
1276
|
+
# 4 / 3.0 # => 1.3333333333333333
|
|
1277
|
+
# 4 / Rational(3, 1) # => (4/3)
|
|
1278
|
+
# 4 / Complex(3, 0) # => ((4/3)+0i)
|
|
1291
1279
|
#
|
|
1292
1280
|
def /: (BigDecimal) -> BigDecimal
|
|
1293
1281
|
| ...
|
|
1294
1282
|
|
|
1295
1283
|
# <!--
|
|
1296
1284
|
# rdoc-file=numeric.c
|
|
1297
|
-
# - self *
|
|
1285
|
+
# - self * other -> numeric
|
|
1298
1286
|
# -->
|
|
1299
|
-
#
|
|
1287
|
+
# Returns the numeric product of `self` and `other`:
|
|
1300
1288
|
#
|
|
1301
1289
|
# 4 * 2 # => 8
|
|
1302
|
-
# 4 * -2 # => -8
|
|
1303
1290
|
# -4 * 2 # => -8
|
|
1291
|
+
# 4 * -2 # => -8
|
|
1304
1292
|
# 4 * 2.0 # => 8.0
|
|
1305
1293
|
# 4 * Rational(1, 3) # => (4/3)
|
|
1306
1294
|
# 4 * Complex(2, 0) # => (8+0i)
|
|
@@ -1310,25 +1298,29 @@ class Integer
|
|
|
1310
1298
|
|
|
1311
1299
|
# <!--
|
|
1312
1300
|
# rdoc-file=numeric.c
|
|
1313
|
-
# - self +
|
|
1301
|
+
# - self + other -> numeric
|
|
1314
1302
|
# -->
|
|
1315
|
-
#
|
|
1303
|
+
# Returns the sum of `self` and `other`:
|
|
1304
|
+
#
|
|
1305
|
+
# 1 + 1 # => 2
|
|
1306
|
+
# 1 + -1 # => 0
|
|
1307
|
+
# 1 + 0 # => 1
|
|
1308
|
+
# 1 + -2 # => -1
|
|
1309
|
+
# 1 + Complex(1, 0) # => (2+0i)
|
|
1310
|
+
# 1 + Rational(1, 1) # => (2/1)
|
|
1316
1311
|
#
|
|
1317
|
-
#
|
|
1318
|
-
#
|
|
1319
|
-
#
|
|
1320
|
-
# 2 + 2.0 # => 4.0
|
|
1321
|
-
# 2 + Rational(2, 1) # => (4/1)
|
|
1322
|
-
# 2 + Complex(2, 0) # => (4+0i)
|
|
1312
|
+
# For a computation involving Floats, the result may be inexact (see Float#+):
|
|
1313
|
+
#
|
|
1314
|
+
# 1 + 3.14 # => 4.140000000000001
|
|
1323
1315
|
#
|
|
1324
1316
|
def +: (BigDecimal) -> BigDecimal
|
|
1325
1317
|
| ...
|
|
1326
1318
|
|
|
1327
1319
|
# <!--
|
|
1328
1320
|
# rdoc-file=numeric.c
|
|
1329
|
-
# - self -
|
|
1321
|
+
# - self - other -> numeric
|
|
1330
1322
|
# -->
|
|
1331
|
-
#
|
|
1323
|
+
# Returns the difference of `self` and `other`:
|
|
1332
1324
|
#
|
|
1333
1325
|
# 4 - 2 # => 2
|
|
1334
1326
|
# -4 - 2 # => -6
|
|
@@ -1368,7 +1360,7 @@ class Float
|
|
|
1368
1360
|
# rdoc-file=numeric.c
|
|
1369
1361
|
# - self / other -> numeric
|
|
1370
1362
|
# -->
|
|
1371
|
-
# Returns
|
|
1363
|
+
# Returns the quotient of `self` and `other`:
|
|
1372
1364
|
#
|
|
1373
1365
|
# f = 3.14
|
|
1374
1366
|
# f / 2 # => 1.57
|
|
@@ -1383,7 +1375,7 @@ class Float
|
|
|
1383
1375
|
# rdoc-file=numeric.c
|
|
1384
1376
|
# - self * other -> numeric
|
|
1385
1377
|
# -->
|
|
1386
|
-
# Returns
|
|
1378
|
+
# Returns the numeric product of `self` and `other`:
|
|
1387
1379
|
#
|
|
1388
1380
|
# f = 3.14
|
|
1389
1381
|
# f * 2 # => 6.28
|
|
@@ -1396,15 +1388,20 @@ class Float
|
|
|
1396
1388
|
|
|
1397
1389
|
# <!--
|
|
1398
1390
|
# rdoc-file=numeric.c
|
|
1399
|
-
# - self + other ->
|
|
1391
|
+
# - self + other -> float or complex
|
|
1400
1392
|
# -->
|
|
1401
|
-
# Returns
|
|
1393
|
+
# Returns the sum of `self` and `other`; the result may be inexact (see Float):
|
|
1402
1394
|
#
|
|
1403
|
-
#
|
|
1404
|
-
#
|
|
1405
|
-
#
|
|
1406
|
-
#
|
|
1407
|
-
#
|
|
1395
|
+
# 3.14 + 0 # => 3.14
|
|
1396
|
+
# 3.14 + 1 # => 4.140000000000001
|
|
1397
|
+
# -3.14 + 0 # => -3.14
|
|
1398
|
+
# -3.14 + 1 # => -2.14
|
|
1399
|
+
#
|
|
1400
|
+
# 3.14 + -3.14 # => 0.0
|
|
1401
|
+
# -3.14 + -3.14 # => -6.28
|
|
1402
|
+
#
|
|
1403
|
+
# 3.14 + Complex(1, 0) # => (4.140000000000001+0i)
|
|
1404
|
+
# 3.14 + Rational(1, 1) # => 4.140000000000001
|
|
1408
1405
|
#
|
|
1409
1406
|
def +: (BigDecimal) -> BigDecimal
|
|
1410
1407
|
| ...
|
|
@@ -1413,7 +1410,7 @@ class Float
|
|
|
1413
1410
|
# rdoc-file=numeric.c
|
|
1414
1411
|
# - self - other -> numeric
|
|
1415
1412
|
# -->
|
|
1416
|
-
# Returns
|
|
1413
|
+
# Returns the difference of `self` and `other`:
|
|
1417
1414
|
#
|
|
1418
1415
|
# f = 3.14
|
|
1419
1416
|
# f - 1 # => 2.14
|
|
@@ -1468,10 +1465,9 @@ class Rational
|
|
|
1468
1465
|
|
|
1469
1466
|
# <!--
|
|
1470
1467
|
# rdoc-file=rational.c
|
|
1471
|
-
# -
|
|
1472
|
-
# - rat.quo(numeric) -> numeric
|
|
1468
|
+
# - self / other -> numeric
|
|
1473
1469
|
# -->
|
|
1474
|
-
#
|
|
1470
|
+
# Returns the quotient of `self` and `other`:
|
|
1475
1471
|
#
|
|
1476
1472
|
# Rational(2, 3) / Rational(2, 3) #=> (1/1)
|
|
1477
1473
|
# Rational(900) / Rational(1) #=> (900/1)
|
|
@@ -1484,39 +1480,50 @@ class Rational
|
|
|
1484
1480
|
|
|
1485
1481
|
# <!--
|
|
1486
1482
|
# rdoc-file=rational.c
|
|
1487
|
-
# -
|
|
1483
|
+
# - self * other -> numeric
|
|
1488
1484
|
# -->
|
|
1489
|
-
#
|
|
1485
|
+
# Returns the numeric product of `self` and `other`:
|
|
1490
1486
|
#
|
|
1491
|
-
# Rational(
|
|
1492
|
-
# Rational(
|
|
1493
|
-
# Rational(
|
|
1494
|
-
# Rational(
|
|
1495
|
-
# Rational(
|
|
1487
|
+
# Rational(9, 8) * 4 #=> (9/2)
|
|
1488
|
+
# Rational(20, 9) * 9.8 #=> 21.77777777777778
|
|
1489
|
+
# Rational(9, 8) * Complex(1, 2) # => ((9/8)+(9/4)*i)
|
|
1490
|
+
# Rational(2, 3) * Rational(2, 3) #=> (4/9)
|
|
1491
|
+
# Rational(900) * Rational(1) #=> (900/1)
|
|
1492
|
+
# Rational(-2, 9) * Rational(-9, 2) #=> (1/1)
|
|
1496
1493
|
#
|
|
1497
1494
|
def *: (BigDecimal) -> BigDecimal
|
|
1498
1495
|
| ...
|
|
1499
1496
|
|
|
1500
1497
|
# <!--
|
|
1501
1498
|
# rdoc-file=rational.c
|
|
1502
|
-
# -
|
|
1499
|
+
# - self + other -> numeric
|
|
1503
1500
|
# -->
|
|
1504
|
-
#
|
|
1501
|
+
# Returns the sum of `self` and `other`:
|
|
1502
|
+
#
|
|
1503
|
+
# Rational(2, 3) + 0 # => (2/3)
|
|
1504
|
+
# Rational(2, 3) + 1 # => (5/3)
|
|
1505
|
+
# Rational(2, 3) + -1 # => (-1/3)
|
|
1506
|
+
#
|
|
1507
|
+
# Rational(2, 3) + Complex(1, 0) # => ((5/3)+0i)
|
|
1505
1508
|
#
|
|
1506
|
-
# Rational(2, 3)
|
|
1507
|
-
# Rational(
|
|
1508
|
-
# Rational(
|
|
1509
|
-
# Rational(
|
|
1510
|
-
#
|
|
1509
|
+
# Rational(2, 3) + Rational(1, 1) # => (5/3)
|
|
1510
|
+
# Rational(2, 3) + Rational(3, 2) # => (13/6)
|
|
1511
|
+
# Rational(2, 3) + Rational(3.0, 2.0) # => (13/6)
|
|
1512
|
+
# Rational(2, 3) + Rational(3.1, 2.1) # => (30399297484750849/14186338826217063)
|
|
1513
|
+
#
|
|
1514
|
+
# For a computation involving Floats, the result may be inexact (see Float#+):
|
|
1515
|
+
#
|
|
1516
|
+
# Rational(2, 3) + 1.0 # => 1.6666666666666665
|
|
1517
|
+
# Rational(2, 3) + Complex(1.0, 0.0) # => (1.6666666666666665+0.0i)
|
|
1511
1518
|
#
|
|
1512
1519
|
def +: (BigDecimal) -> BigDecimal
|
|
1513
1520
|
| ...
|
|
1514
1521
|
|
|
1515
1522
|
# <!--
|
|
1516
1523
|
# rdoc-file=rational.c
|
|
1517
|
-
# -
|
|
1524
|
+
# - self - other -> numeric
|
|
1518
1525
|
# -->
|
|
1519
|
-
#
|
|
1526
|
+
# Returns the difference of `self` and `other`:
|
|
1520
1527
|
#
|
|
1521
1528
|
# Rational(2, 3) - Rational(2, 3) #=> (0/1)
|
|
1522
1529
|
# Rational(900) - Rational(1) #=> (899/1)
|
|
@@ -1553,9 +1560,9 @@ class Complex
|
|
|
1553
1560
|
|
|
1554
1561
|
# <!--
|
|
1555
1562
|
# rdoc-file=complex.c
|
|
1556
|
-
# -
|
|
1563
|
+
# - self / other -> complex
|
|
1557
1564
|
# -->
|
|
1558
|
-
# Returns the quotient of `self` and `
|
|
1565
|
+
# Returns the quotient of `self` and `other`:
|
|
1559
1566
|
#
|
|
1560
1567
|
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
|
1561
1568
|
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
|
@@ -1568,39 +1575,50 @@ class Complex
|
|
|
1568
1575
|
|
|
1569
1576
|
# <!--
|
|
1570
1577
|
# rdoc-file=complex.c
|
|
1571
|
-
# -
|
|
1578
|
+
# - self * other -> numeric
|
|
1572
1579
|
# -->
|
|
1573
|
-
# Returns the product of `self` and `
|
|
1580
|
+
# Returns the numeric product of `self` and `other`:
|
|
1574
1581
|
#
|
|
1582
|
+
# Complex.rect(9, 8) * 4 # => (36+32i)
|
|
1583
|
+
# Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
|
|
1575
1584
|
# Complex.rect(2, 3) * Complex.rect(2, 3) # => (-5+12i)
|
|
1576
1585
|
# Complex.rect(900) * Complex.rect(1) # => (900+0i)
|
|
1577
1586
|
# Complex.rect(-2, 9) * Complex.rect(-9, 2) # => (0-85i)
|
|
1578
|
-
# Complex.rect(9, 8) *
|
|
1579
|
-
# Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
|
|
1587
|
+
# Complex.rect(9, 8) * Rational(2, 3) # => ((6/1)+(16/3)*i)
|
|
1580
1588
|
#
|
|
1581
1589
|
def *: (BigDecimal) -> Complex
|
|
1582
1590
|
| ...
|
|
1583
1591
|
|
|
1584
1592
|
# <!--
|
|
1585
1593
|
# rdoc-file=complex.c
|
|
1586
|
-
# -
|
|
1594
|
+
# - self + other -> numeric
|
|
1587
1595
|
# -->
|
|
1588
|
-
# Returns the sum of `self` and `
|
|
1596
|
+
# Returns the sum of `self` and `other`:
|
|
1597
|
+
#
|
|
1598
|
+
# Complex(1, 2) + 0 # => (1+2i)
|
|
1599
|
+
# Complex(1, 2) + 1 # => (2+2i)
|
|
1600
|
+
# Complex(1, 2) + -1 # => (0+2i)
|
|
1601
|
+
#
|
|
1602
|
+
# Complex(1, 2) + 1.0 # => (2.0+2i)
|
|
1603
|
+
#
|
|
1604
|
+
# Complex(1, 2) + Complex(2, 1) # => (3+3i)
|
|
1605
|
+
# Complex(1, 2) + Complex(2.0, 1.0) # => (3.0+3.0i)
|
|
1606
|
+
#
|
|
1607
|
+
# Complex(1, 2) + Rational(1, 1) # => ((2/1)+2i)
|
|
1608
|
+
# Complex(1, 2) + Rational(1, 2) # => ((3/2)+2i)
|
|
1609
|
+
#
|
|
1610
|
+
# For a computation involving Floats, the result may be inexact (see Float#+):
|
|
1589
1611
|
#
|
|
1590
|
-
# Complex
|
|
1591
|
-
# Complex.rect(900) + Complex.rect(1) # => (901+0i)
|
|
1592
|
-
# Complex.rect(-2, 9) + Complex.rect(-9, 2) # => (-11+11i)
|
|
1593
|
-
# Complex.rect(9, 8) + 4 # => (13+8i)
|
|
1594
|
-
# Complex.rect(20, 9) + 9.8 # => (29.8+9i)
|
|
1612
|
+
# Complex(1, 2) + 3.14 # => (4.140000000000001+2i)
|
|
1595
1613
|
#
|
|
1596
1614
|
def +: (BigDecimal) -> Complex
|
|
1597
1615
|
| ...
|
|
1598
1616
|
|
|
1599
1617
|
# <!--
|
|
1600
1618
|
# rdoc-file=complex.c
|
|
1601
|
-
# -
|
|
1619
|
+
# - self - other -> complex
|
|
1602
1620
|
# -->
|
|
1603
|
-
# Returns the difference of `self` and `
|
|
1621
|
+
# Returns the difference of `self` and `other`:
|
|
1604
1622
|
#
|
|
1605
1623
|
# Complex.rect(2, 3) - Complex.rect(2, 3) # => (0+0i)
|
|
1606
1624
|
# Complex.rect(900) - Complex.rect(1) # => (899+0i)
|
|
@@ -35,6 +35,46 @@ module BigMath
|
|
|
35
35
|
#
|
|
36
36
|
def self?.PI: (Numeric prec) -> BigDecimal
|
|
37
37
|
|
|
38
|
+
# Computes the arccosine of `decimal` to the specified number of digits of
|
|
39
|
+
# precision, `numeric`.
|
|
40
|
+
#
|
|
41
|
+
# If `decimal` is NaN, returns NaN.
|
|
42
|
+
#
|
|
43
|
+
# BigMath.acos(BigDecimal('0.5'), 32).to_s
|
|
44
|
+
# #=> "0.10471975511965977461542144610932e1"
|
|
45
|
+
#
|
|
46
|
+
def self?.acos: (BigDecimal, Numeric) -> BigDecimal
|
|
47
|
+
|
|
48
|
+
# Computes the inverse hyperbolic cosine of `decimal` to the specified number of
|
|
49
|
+
# digits of precision, `numeric`.
|
|
50
|
+
#
|
|
51
|
+
# If `decimal` is NaN, returns NaN.
|
|
52
|
+
#
|
|
53
|
+
# BigMath.acosh(BigDecimal('2'), 32).to_s
|
|
54
|
+
# #=> "0.1316957896924816708625046347308e1"
|
|
55
|
+
#
|
|
56
|
+
def self?.acosh: (BigDecimal, Numeric) -> BigDecimal
|
|
57
|
+
|
|
58
|
+
# Computes the arcsine of `decimal` to the specified number of digits of
|
|
59
|
+
# precision, `numeric`.
|
|
60
|
+
#
|
|
61
|
+
# If `decimal` is NaN, returns NaN.
|
|
62
|
+
#
|
|
63
|
+
# BigMath.asin(BigDecimal('0.5'), 32).to_s
|
|
64
|
+
# #=> "0.52359877559829887307710723054658e0"
|
|
65
|
+
#
|
|
66
|
+
def self?.asin: (BigDecimal, Numeric) -> BigDecimal
|
|
67
|
+
|
|
68
|
+
# Computes the inverse hyperbolic sine of `decimal` to the specified number of
|
|
69
|
+
# digits of precision, `numeric`.
|
|
70
|
+
#
|
|
71
|
+
# If `decimal` is NaN, returns NaN.
|
|
72
|
+
#
|
|
73
|
+
# BigMath.asinh(BigDecimal('1'), 32).to_s
|
|
74
|
+
# #=> "0.88137358701954302523260932497979e0"
|
|
75
|
+
#
|
|
76
|
+
def self?.asinh: (BigDecimal, Numeric) -> BigDecimal
|
|
77
|
+
|
|
38
78
|
# <!--
|
|
39
79
|
# rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
|
|
40
80
|
# - atan(decimal, numeric) -> BigDecimal
|
|
@@ -49,6 +89,32 @@ module BigMath
|
|
|
49
89
|
#
|
|
50
90
|
def self?.atan: (BigDecimal x, Numeric prec) -> BigDecimal
|
|
51
91
|
|
|
92
|
+
# Computes the arctangent of y and x to the specified number of digits of
|
|
93
|
+
# precision, `numeric`.
|
|
94
|
+
#
|
|
95
|
+
# BigMath.atan2(BigDecimal('-1'), BigDecimal('1'), 32).to_s
|
|
96
|
+
# #=> "-0.78539816339744830961566084581988e0"
|
|
97
|
+
#
|
|
98
|
+
def self?.atan2: (BigDecimal, BigDecimal, Numeric) -> BigDecimal
|
|
99
|
+
|
|
100
|
+
# Computes the inverse hyperbolic tangent of `decimal` to the specified number
|
|
101
|
+
# of digits of precision, `numeric`.
|
|
102
|
+
#
|
|
103
|
+
# If `decimal` is NaN, returns NaN.
|
|
104
|
+
#
|
|
105
|
+
# BigMath.atanh(BigDecimal('0.5'), 32).to_s
|
|
106
|
+
# #=> "0.54930614433405484569762261846126e0"
|
|
107
|
+
#
|
|
108
|
+
def self?.atanh: (BigDecimal, Numeric) -> BigDecimal
|
|
109
|
+
|
|
110
|
+
# Computes the cube root of `decimal` to the specified number of digits of
|
|
111
|
+
# precision, `numeric`.
|
|
112
|
+
#
|
|
113
|
+
# BigMath.cbrt(BigDecimal('2'), 32).to_s
|
|
114
|
+
# #=> "0.12599210498948731647672106072782e1"
|
|
115
|
+
#
|
|
116
|
+
def self?.cbrt: (BigDecimal, Numeric) -> BigDecimal
|
|
117
|
+
|
|
52
118
|
# <!--
|
|
53
119
|
# rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
|
|
54
120
|
# - cos(decimal, numeric) -> BigDecimal
|
|
@@ -63,10 +129,36 @@ module BigMath
|
|
|
63
129
|
#
|
|
64
130
|
def self?.cos: (BigDecimal x, Numeric prec) -> BigDecimal
|
|
65
131
|
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
132
|
+
# Computes the hyperbolic cosine of `decimal` to the specified number of digits
|
|
133
|
+
# of precision, `numeric`.
|
|
134
|
+
#
|
|
135
|
+
# If `decimal` is NaN, returns NaN.
|
|
136
|
+
#
|
|
137
|
+
# BigMath.cosh(BigDecimal('1'), 32).to_s
|
|
138
|
+
# #=> "0.15430806348152437784779056207571e1"
|
|
139
|
+
#
|
|
140
|
+
def self?.cosh: (BigDecimal, Numeric) -> BigDecimal
|
|
141
|
+
|
|
142
|
+
# Computes the error function of +decimal+ to the specified number of digits of
|
|
143
|
+
# precision, +numeric+.
|
|
144
|
+
#
|
|
145
|
+
# If +decimal+ is NaN, returns NaN.
|
|
146
|
+
#
|
|
147
|
+
# BigMath.erf(BigDecimal('1'), 32).to_s
|
|
148
|
+
# #=> "0.84270079294971486934122063508261e0"
|
|
149
|
+
#
|
|
150
|
+
def self?.erf: (BigDecimal, Numeric) -> BigDecimal
|
|
151
|
+
|
|
152
|
+
# Computes the complementary error function of +decimal+ to the specified number of digits of
|
|
153
|
+
# precision, +numeric+.
|
|
154
|
+
#
|
|
155
|
+
# If +decimal+ is NaN, returns NaN.
|
|
156
|
+
#
|
|
157
|
+
# BigMath.erfc(BigDecimal('10'), 32).to_s
|
|
158
|
+
# #=> "0.20884875837625447570007862949578e-44"
|
|
159
|
+
#
|
|
160
|
+
def self?.erfc: (BigDecimal, Numeric) -> BigDecimal
|
|
161
|
+
|
|
70
162
|
# Computes the value of e (the base of natural logarithms) raised to the power
|
|
71
163
|
# of `decimal`, to the specified number of digits of precision.
|
|
72
164
|
#
|
|
@@ -76,10 +168,45 @@ module BigMath
|
|
|
76
168
|
#
|
|
77
169
|
def self?.exp: (BigDecimal, Numeric prec) -> BigDecimal
|
|
78
170
|
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
171
|
+
# Decomposes +x+ into a normalized fraction and an integral power of ten.
|
|
172
|
+
#
|
|
173
|
+
# BigMath.frexp(BigDecimal(123.456))
|
|
174
|
+
# #=> [0.123456e0, 3]
|
|
175
|
+
#
|
|
176
|
+
def self?.frexp: (BigDecimal) -> [ BigDecimal, Integer ]
|
|
177
|
+
|
|
178
|
+
# Computes the gamma function of +decimal+ to the specified number of
|
|
179
|
+
# digits of precision, +numeric+.
|
|
180
|
+
#
|
|
181
|
+
# BigMath.gamma(BigDecimal('0.5'), 32).to_s
|
|
182
|
+
# #=> "0.17724538509055160272981674833411e1"
|
|
183
|
+
#
|
|
184
|
+
def self?.gamma: (BigDecimal, Numeric) -> BigDecimal
|
|
185
|
+
|
|
186
|
+
# Returns sqrt(x**2 + y**2) to the specified number of digits of precision,
|
|
187
|
+
# `numeric`.
|
|
188
|
+
#
|
|
189
|
+
# BigMath.hypot(BigDecimal('1'), BigDecimal('2'), 32).to_s
|
|
190
|
+
# #=> "0.22360679774997896964091736687313e1"
|
|
191
|
+
#
|
|
192
|
+
def self?.hypot: (BigDecimal, BigDecimal, Numeric) -> BigDecimal
|
|
193
|
+
|
|
194
|
+
# Inverse of +frexp+.
|
|
195
|
+
# Returns the value of fraction * 10**exponent.
|
|
196
|
+
#
|
|
197
|
+
# BigMath.ldexp(BigDecimal("0.123456e0"), 3)
|
|
198
|
+
# #=> 0.123456e3
|
|
199
|
+
#
|
|
200
|
+
def self?.ldexp: (BigDecimal, Integer) -> BigDecimal
|
|
201
|
+
|
|
202
|
+
# Computes the natural logarithm of the absolute value of the gamma function
|
|
203
|
+
# of +decimal+ to the specified number of digits of precision, +numeric+ and its sign.
|
|
204
|
+
#
|
|
205
|
+
# BigMath.lgamma(BigDecimal('0.5'), 32)
|
|
206
|
+
# #=> [0.57236494292470008707171367567653e0, 1]
|
|
207
|
+
#
|
|
208
|
+
def self?.lgamma: (BigDecimal, Numeric) -> [BigDecimal, Integer]
|
|
209
|
+
|
|
83
210
|
# Computes the natural logarithm of `decimal` to the specified number of digits
|
|
84
211
|
# of precision, `numeric`.
|
|
85
212
|
#
|
|
@@ -91,6 +218,20 @@ module BigMath
|
|
|
91
218
|
#
|
|
92
219
|
def self?.log: (BigDecimal, Numeric prec) -> BigDecimal
|
|
93
220
|
|
|
221
|
+
# Computes the base 2 logarithm of `decimal` to the specified number of digits
|
|
222
|
+
# of precision, `numeric`.
|
|
223
|
+
#
|
|
224
|
+
# If `decimal` is zero or negative, raises Math::DomainError.
|
|
225
|
+
#
|
|
226
|
+
# If `decimal` is positive infinity, returns Infinity.
|
|
227
|
+
#
|
|
228
|
+
# If `decimal` is NaN, returns NaN.
|
|
229
|
+
#
|
|
230
|
+
# BigMath.log2(BigDecimal('3'), 32).to_s
|
|
231
|
+
# #=> "0.15849625007211561814537389439478e1"
|
|
232
|
+
#
|
|
233
|
+
def self?.log2: (BigDecimal, Numeric) -> BigDecimal
|
|
234
|
+
|
|
94
235
|
# <!--
|
|
95
236
|
# rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
|
|
96
237
|
# - sin(decimal, numeric) -> BigDecimal
|
|
@@ -105,6 +246,16 @@ module BigMath
|
|
|
105
246
|
#
|
|
106
247
|
def self?.sin: (BigDecimal x, Numeric prec) -> BigDecimal
|
|
107
248
|
|
|
249
|
+
# Computes the hyperbolic sine of `decimal` to the specified number of digits of
|
|
250
|
+
# precision, `numeric`.
|
|
251
|
+
#
|
|
252
|
+
# If `decimal` is NaN, returns NaN.
|
|
253
|
+
#
|
|
254
|
+
# BigMath.sinh(BigDecimal('1'), 32).to_s
|
|
255
|
+
# #=> "0.11752011936438014568823818505956e1"
|
|
256
|
+
#
|
|
257
|
+
def self?.sinh: (BigDecimal, Numeric) -> BigDecimal
|
|
258
|
+
|
|
108
259
|
# <!--
|
|
109
260
|
# rdoc-file=ext/bigdecimal/lib/bigdecimal/math.rb
|
|
110
261
|
# - sqrt(decimal, numeric) -> BigDecimal
|
|
@@ -116,4 +267,14 @@ module BigMath
|
|
|
116
267
|
# #=> "0.1414213562373095048801688724e1"
|
|
117
268
|
#
|
|
118
269
|
def self?.sqrt: (BigDecimal x, Numeric prec) -> BigDecimal
|
|
270
|
+
|
|
271
|
+
# Computes the hyperbolic tangent of `decimal` to the specified number of digits
|
|
272
|
+
# of precision, `numeric`.
|
|
273
|
+
#
|
|
274
|
+
# If `decimal` is NaN, returns NaN.
|
|
275
|
+
#
|
|
276
|
+
# BigMath.tanh(BigDecimal('1'), 32).to_s
|
|
277
|
+
# #=> "0.76159415595576488811945828260479e0"
|
|
278
|
+
#
|
|
279
|
+
def self?.tanh: (BigDecimal, Numeric) -> BigDecimal
|
|
119
280
|
end
|