rbs-relaxed 3.9.0.1
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 +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +176 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1171 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +258 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +667 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +435 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +36 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +35 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5552 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +487 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +79 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +210 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +166 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +200 -0
- metadata +532 -0
data/core/complex.rbs
ADDED
|
@@ -0,0 +1,786 @@
|
|
|
1
|
+
# <!-- rdoc-file=complex.c -->
|
|
2
|
+
# A Complex object houses a pair of values, given when the object is created as
|
|
3
|
+
# either *rectangular coordinates* or *polar coordinates*.
|
|
4
|
+
#
|
|
5
|
+
# ## Rectangular Coordinates
|
|
6
|
+
#
|
|
7
|
+
# The rectangular coordinates of a complex number are called the *real* and
|
|
8
|
+
# *imaginary* parts; see [Complex number
|
|
9
|
+
# definition](https://en.wikipedia.org/wiki/Complex_number#Definition_and_basic_
|
|
10
|
+
# operations).
|
|
11
|
+
#
|
|
12
|
+
# You can create a Complex object from rectangular coordinates with:
|
|
13
|
+
#
|
|
14
|
+
# * A [complex literal](rdoc-ref:syntax/literals.rdoc@Complex+Literals).
|
|
15
|
+
# * Method Complex.rect.
|
|
16
|
+
# * Method Kernel#Complex, either with numeric arguments or with certain
|
|
17
|
+
# string arguments.
|
|
18
|
+
# * Method String#to_c, for certain strings.
|
|
19
|
+
#
|
|
20
|
+
# Note that each of the stored parts may be a an instance one of the classes
|
|
21
|
+
# Complex, Float, Integer, or Rational; they may be retrieved:
|
|
22
|
+
#
|
|
23
|
+
# * Separately, with methods Complex#real and Complex#imaginary.
|
|
24
|
+
# * Together, with method Complex#rect.
|
|
25
|
+
#
|
|
26
|
+
# The corresponding (computed) polar values may be retrieved:
|
|
27
|
+
#
|
|
28
|
+
# * Separately, with methods Complex#abs and Complex#arg.
|
|
29
|
+
# * Together, with method Complex#polar.
|
|
30
|
+
#
|
|
31
|
+
# ## Polar Coordinates
|
|
32
|
+
#
|
|
33
|
+
# The polar coordinates of a complex number are called the *absolute* and
|
|
34
|
+
# *argument* parts; see [Complex polar
|
|
35
|
+
# plane](https://en.wikipedia.org/wiki/Complex_number#Polar_form).
|
|
36
|
+
#
|
|
37
|
+
# In this class, the argument part in expressed
|
|
38
|
+
# [radians](https://en.wikipedia.org/wiki/Radian) (not
|
|
39
|
+
# [degrees](https://en.wikipedia.org/wiki/Degree_(angle))).
|
|
40
|
+
#
|
|
41
|
+
# You can create a Complex object from polar coordinates with:
|
|
42
|
+
#
|
|
43
|
+
# * Method Complex.polar.
|
|
44
|
+
# * Method Kernel#Complex, with certain string arguments.
|
|
45
|
+
# * Method String#to_c, for certain strings.
|
|
46
|
+
#
|
|
47
|
+
# Note that each of the stored parts may be a an instance one of the classes
|
|
48
|
+
# Complex, Float, Integer, or Rational; they may be retrieved:
|
|
49
|
+
#
|
|
50
|
+
# * Separately, with methods Complex#abs and Complex#arg.
|
|
51
|
+
# * Together, with method Complex#polar.
|
|
52
|
+
#
|
|
53
|
+
# The corresponding (computed) rectangular values may be retrieved:
|
|
54
|
+
#
|
|
55
|
+
# * Separately, with methods Complex#real and Complex#imag.
|
|
56
|
+
# * Together, with method Complex#rect.
|
|
57
|
+
#
|
|
58
|
+
# ## What's Here
|
|
59
|
+
#
|
|
60
|
+
# First, what's elsewhere:
|
|
61
|
+
#
|
|
62
|
+
# * Class Complex inherits (directly or indirectly) from classes
|
|
63
|
+
# [Numeric](rdoc-ref:Numeric@What-27s+Here) and
|
|
64
|
+
# [Object](rdoc-ref:Object@What-27s+Here).
|
|
65
|
+
# * Includes (indirectly) module
|
|
66
|
+
# [Comparable](rdoc-ref:Comparable@What-27s+Here).
|
|
67
|
+
#
|
|
68
|
+
# Here, class Complex has methods for:
|
|
69
|
+
#
|
|
70
|
+
# ### Creating Complex Objects
|
|
71
|
+
#
|
|
72
|
+
# * ::polar: Returns a new Complex object based on given polar coordinates.
|
|
73
|
+
# * ::rect (and its alias ::rectangular): Returns a new Complex object based
|
|
74
|
+
# on given rectangular coordinates.
|
|
75
|
+
#
|
|
76
|
+
# ### Querying
|
|
77
|
+
#
|
|
78
|
+
# * #abs (and its alias #magnitude): Returns the absolute value for `self`.
|
|
79
|
+
# * #arg (and its aliases #angle and #phase): Returns the argument (angle) for
|
|
80
|
+
# `self` in radians.
|
|
81
|
+
# * #denominator: Returns the denominator of `self`.
|
|
82
|
+
# * #finite?: Returns whether both `self.real` and `self.image` are finite.
|
|
83
|
+
# * #hash: Returns the integer hash value for `self`.
|
|
84
|
+
# * #imag (and its alias #imaginary): Returns the imaginary value for `self`.
|
|
85
|
+
# * #infinite?: Returns whether `self.real` or `self.image` is infinite.
|
|
86
|
+
# * #numerator: Returns the numerator of `self`.
|
|
87
|
+
# * #polar: Returns the array `[self.abs, self.arg]`.
|
|
88
|
+
# * #inspect: Returns a string representation of `self`.
|
|
89
|
+
# * #real: Returns the real value for `self`.
|
|
90
|
+
# * #real?: Returns `false`; for compatibility with Numeric#real?.
|
|
91
|
+
# * #rect (and its alias #rectangular): Returns the array `[self.real,
|
|
92
|
+
# self.imag]`.
|
|
93
|
+
#
|
|
94
|
+
# ### Comparing
|
|
95
|
+
#
|
|
96
|
+
# * #<=>: Returns whether `self` is less than, equal to, or greater than the
|
|
97
|
+
# given argument.
|
|
98
|
+
# * #==: Returns whether `self` is equal to the given argument.
|
|
99
|
+
#
|
|
100
|
+
# ### Converting
|
|
101
|
+
#
|
|
102
|
+
# * #rationalize: Returns a Rational object whose value is exactly or
|
|
103
|
+
# approximately equivalent to that of `self.real`.
|
|
104
|
+
# * #to_c: Returns `self`.
|
|
105
|
+
# * #to_d: Returns the value as a BigDecimal object.
|
|
106
|
+
# * #to_f: Returns the value of `self.real` as a Float, if possible.
|
|
107
|
+
# * #to_i: Returns the value of `self.real` as an Integer, if possible.
|
|
108
|
+
# * #to_r: Returns the value of `self.real` as a Rational, if possible.
|
|
109
|
+
# * #to_s: Returns a string representation of `self`.
|
|
110
|
+
#
|
|
111
|
+
# ### Performing Complex Arithmetic
|
|
112
|
+
#
|
|
113
|
+
# * #*: Returns the product of `self` and the given numeric.
|
|
114
|
+
# * #**: Returns `self` raised to power of the given numeric.
|
|
115
|
+
# * #+: Returns the sum of `self` and the given numeric.
|
|
116
|
+
# * #-: Returns the difference of `self` and the given numeric.
|
|
117
|
+
# * #-@: Returns the negation of `self`.
|
|
118
|
+
# * #/: Returns the quotient of `self` and the given numeric.
|
|
119
|
+
# * #abs2: Returns square of the absolute value (magnitude) for `self`.
|
|
120
|
+
# * #conj (and its alias #conjugate): Returns the conjugate of `self`.
|
|
121
|
+
# * #fdiv: Returns `Complex.rect(self.real/numeric, self.imag/numeric)`.
|
|
122
|
+
#
|
|
123
|
+
# ### Working with JSON
|
|
124
|
+
#
|
|
125
|
+
# * ::json_create: Returns a new Complex object, deserialized from the given
|
|
126
|
+
# serialized hash.
|
|
127
|
+
# * #as_json: Returns a serialized hash constructed from `self`.
|
|
128
|
+
# * #to_json: Returns a JSON string representing `self`.
|
|
129
|
+
#
|
|
130
|
+
# These methods are provided by the [JSON gem](https://github.com/ruby/json). To
|
|
131
|
+
# make these methods available:
|
|
132
|
+
#
|
|
133
|
+
# require 'json/add/complex'
|
|
134
|
+
#
|
|
135
|
+
class Complex < Numeric
|
|
136
|
+
# <!--
|
|
137
|
+
# rdoc-file=complex.c
|
|
138
|
+
# - Complex.polar(abs, arg = 0) -> complex
|
|
139
|
+
# -->
|
|
140
|
+
# Returns a new Complex object formed from the arguments, each of which must be
|
|
141
|
+
# an instance of Numeric, or an instance of one of its subclasses: Complex,
|
|
142
|
+
# Float, Integer, Rational. Argument `arg` is given in radians; see [Polar
|
|
143
|
+
# Coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
144
|
+
#
|
|
145
|
+
# Complex.polar(3) # => (3+0i)
|
|
146
|
+
# Complex.polar(3, 2.0) # => (-1.2484405096414273+2.727892280477045i)
|
|
147
|
+
# Complex.polar(-3, -2.0) # => (1.2484405096414273+2.727892280477045i)
|
|
148
|
+
#
|
|
149
|
+
def self.polar: (Numeric, ?Numeric) -> Complex
|
|
150
|
+
|
|
151
|
+
# <!--
|
|
152
|
+
# rdoc-file=complex.c
|
|
153
|
+
# - Complex.rect(real, imag = 0) -> complex
|
|
154
|
+
# -->
|
|
155
|
+
# Returns a new Complex object formed from the arguments, each of which must be
|
|
156
|
+
# an instance of Numeric, or an instance of one of its subclasses: Complex,
|
|
157
|
+
# Float, Integer, Rational; see [Rectangular
|
|
158
|
+
# Coordinates](rdoc-ref:Complex@Rectangular+Coordinates):
|
|
159
|
+
#
|
|
160
|
+
# Complex.rect(3) # => (3+0i)
|
|
161
|
+
# Complex.rect(3, Math::PI) # => (3+3.141592653589793i)
|
|
162
|
+
# Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i)
|
|
163
|
+
#
|
|
164
|
+
# Complex.rectangular is an alias for Complex.rect.
|
|
165
|
+
#
|
|
166
|
+
def self.rect: (Numeric, ?Numeric) -> Complex
|
|
167
|
+
|
|
168
|
+
# <!--
|
|
169
|
+
# rdoc-file=complex.c
|
|
170
|
+
# - Complex.rect(real, imag = 0) -> complex
|
|
171
|
+
# -->
|
|
172
|
+
# Returns a new Complex object formed from the arguments, each of which must be
|
|
173
|
+
# an instance of Numeric, or an instance of one of its subclasses: Complex,
|
|
174
|
+
# Float, Integer, Rational; see [Rectangular
|
|
175
|
+
# Coordinates](rdoc-ref:Complex@Rectangular+Coordinates):
|
|
176
|
+
#
|
|
177
|
+
# Complex.rect(3) # => (3+0i)
|
|
178
|
+
# Complex.rect(3, Math::PI) # => (3+3.141592653589793i)
|
|
179
|
+
# Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i)
|
|
180
|
+
#
|
|
181
|
+
# Complex.rectangular is an alias for Complex.rect.
|
|
182
|
+
#
|
|
183
|
+
alias self.rectangular self.rect
|
|
184
|
+
|
|
185
|
+
# <!--
|
|
186
|
+
# rdoc-file=complex.c
|
|
187
|
+
# - complex * numeric -> new_complex
|
|
188
|
+
# -->
|
|
189
|
+
# Returns the product of `self` and `numeric`:
|
|
190
|
+
#
|
|
191
|
+
# Complex.rect(2, 3) * Complex.rect(2, 3) # => (-5+12i)
|
|
192
|
+
# Complex.rect(900) * Complex.rect(1) # => (900+0i)
|
|
193
|
+
# Complex.rect(-2, 9) * Complex.rect(-9, 2) # => (0-85i)
|
|
194
|
+
# Complex.rect(9, 8) * 4 # => (36+32i)
|
|
195
|
+
# Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
|
|
196
|
+
#
|
|
197
|
+
def *: (Numeric) -> Complex
|
|
198
|
+
|
|
199
|
+
# <!--
|
|
200
|
+
# rdoc-file=complex.c
|
|
201
|
+
# - complex ** numeric -> new_complex
|
|
202
|
+
# -->
|
|
203
|
+
# Returns `self` raised to power `numeric`:
|
|
204
|
+
#
|
|
205
|
+
# Complex.rect(0, 1) ** 2 # => (-1+0i)
|
|
206
|
+
# Complex.rect(-8) ** Rational(1, 3) # => (1.0000000000000002+1.7320508075688772i)
|
|
207
|
+
#
|
|
208
|
+
def **: (Numeric) -> Complex
|
|
209
|
+
|
|
210
|
+
# <!--
|
|
211
|
+
# rdoc-file=complex.c
|
|
212
|
+
# - complex + numeric -> new_complex
|
|
213
|
+
# -->
|
|
214
|
+
# Returns the sum of `self` and `numeric`:
|
|
215
|
+
#
|
|
216
|
+
# Complex.rect(2, 3) + Complex.rect(2, 3) # => (4+6i)
|
|
217
|
+
# Complex.rect(900) + Complex.rect(1) # => (901+0i)
|
|
218
|
+
# Complex.rect(-2, 9) + Complex.rect(-9, 2) # => (-11+11i)
|
|
219
|
+
# Complex.rect(9, 8) + 4 # => (13+8i)
|
|
220
|
+
# Complex.rect(20, 9) + 9.8 # => (29.8+9i)
|
|
221
|
+
#
|
|
222
|
+
def +: (Numeric) -> Complex
|
|
223
|
+
|
|
224
|
+
def +@: () -> Complex
|
|
225
|
+
|
|
226
|
+
# <!--
|
|
227
|
+
# rdoc-file=complex.c
|
|
228
|
+
# - complex - numeric -> new_complex
|
|
229
|
+
# -->
|
|
230
|
+
# Returns the difference of `self` and `numeric`:
|
|
231
|
+
#
|
|
232
|
+
# Complex.rect(2, 3) - Complex.rect(2, 3) # => (0+0i)
|
|
233
|
+
# Complex.rect(900) - Complex.rect(1) # => (899+0i)
|
|
234
|
+
# Complex.rect(-2, 9) - Complex.rect(-9, 2) # => (7+7i)
|
|
235
|
+
# Complex.rect(9, 8) - 4 # => (5+8i)
|
|
236
|
+
# Complex.rect(20, 9) - 9.8 # => (10.2+9i)
|
|
237
|
+
#
|
|
238
|
+
def -: (Numeric) -> Complex
|
|
239
|
+
|
|
240
|
+
# <!--
|
|
241
|
+
# rdoc-file=complex.c
|
|
242
|
+
# - -complex -> new_complex
|
|
243
|
+
# -->
|
|
244
|
+
# Returns the negation of `self`, which is the negation of each of its parts:
|
|
245
|
+
#
|
|
246
|
+
# -Complex.rect(1, 2) # => (-1-2i)
|
|
247
|
+
# -Complex.rect(-1, -2) # => (1+2i)
|
|
248
|
+
#
|
|
249
|
+
def -@: () -> Complex
|
|
250
|
+
|
|
251
|
+
# <!--
|
|
252
|
+
# rdoc-file=complex.c
|
|
253
|
+
# - complex / numeric -> new_complex
|
|
254
|
+
# -->
|
|
255
|
+
# Returns the quotient of `self` and `numeric`:
|
|
256
|
+
#
|
|
257
|
+
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
|
258
|
+
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
|
259
|
+
# Complex.rect(-2, 9) / Complex.rect(-9, 2) # => ((36/85)-(77/85)*i)
|
|
260
|
+
# Complex.rect(9, 8) / 4 # => ((9/4)+2i)
|
|
261
|
+
# Complex.rect(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
|
|
262
|
+
#
|
|
263
|
+
def /: (Numeric) -> Complex
|
|
264
|
+
|
|
265
|
+
def <: (Numeric) -> bot
|
|
266
|
+
|
|
267
|
+
def <=: (Numeric) -> bot
|
|
268
|
+
|
|
269
|
+
# <!--
|
|
270
|
+
# rdoc-file=complex.c
|
|
271
|
+
# - complex <=> object -> -1, 0, 1, or nil
|
|
272
|
+
# -->
|
|
273
|
+
# Returns:
|
|
274
|
+
#
|
|
275
|
+
# * `self.real <=> object.real` if both of the following are true:
|
|
276
|
+
#
|
|
277
|
+
# * `self.imag == 0`.
|
|
278
|
+
# * `object.imag == 0`. # Always true if object is numeric but not
|
|
279
|
+
# complex.
|
|
280
|
+
#
|
|
281
|
+
# * `nil` otherwise.
|
|
282
|
+
#
|
|
283
|
+
# Examples:
|
|
284
|
+
#
|
|
285
|
+
# Complex.rect(2) <=> 3 # => -1
|
|
286
|
+
# Complex.rect(2) <=> 2 # => 0
|
|
287
|
+
# Complex.rect(2) <=> 1 # => 1
|
|
288
|
+
# Complex.rect(2, 1) <=> 1 # => nil # self.imag not zero.
|
|
289
|
+
# Complex.rect(1) <=> Complex.rect(1, 1) # => nil # object.imag not zero.
|
|
290
|
+
# Complex.rect(1) <=> 'Foo' # => nil # object.imag not defined.
|
|
291
|
+
#
|
|
292
|
+
def <=>: (untyped) -> Integer?
|
|
293
|
+
|
|
294
|
+
# <!--
|
|
295
|
+
# rdoc-file=complex.c
|
|
296
|
+
# - complex == object -> true or false
|
|
297
|
+
# -->
|
|
298
|
+
# Returns `true` if `self.real == object.real` and `self.imag == object.imag`:
|
|
299
|
+
#
|
|
300
|
+
# Complex.rect(2, 3) == Complex.rect(2.0, 3.0) # => true
|
|
301
|
+
#
|
|
302
|
+
def ==: (untyped) -> bool
|
|
303
|
+
|
|
304
|
+
def >: (Numeric) -> bot
|
|
305
|
+
|
|
306
|
+
def >=: (Numeric) -> bot
|
|
307
|
+
|
|
308
|
+
# <!--
|
|
309
|
+
# rdoc-file=complex.c
|
|
310
|
+
# - abs -> float
|
|
311
|
+
# -->
|
|
312
|
+
# Returns the absolute value (magnitude) for `self`; see [polar
|
|
313
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
314
|
+
#
|
|
315
|
+
# Complex.polar(-1, 0).abs # => 1.0
|
|
316
|
+
#
|
|
317
|
+
# If `self` was created with [rectangular
|
|
318
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
319
|
+
# computed, and may be inexact:
|
|
320
|
+
#
|
|
321
|
+
# Complex.rectangular(1, 1).abs # => 1.4142135623730951 # The square root of 2.
|
|
322
|
+
#
|
|
323
|
+
def abs: () -> Numeric
|
|
324
|
+
|
|
325
|
+
# <!--
|
|
326
|
+
# rdoc-file=complex.c
|
|
327
|
+
# - abs2 -> float
|
|
328
|
+
# -->
|
|
329
|
+
# Returns square of the absolute value (magnitude) for `self`; see [polar
|
|
330
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
331
|
+
#
|
|
332
|
+
# Complex.polar(2, 2).abs2 # => 4.0
|
|
333
|
+
#
|
|
334
|
+
# If `self` was created with [rectangular
|
|
335
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
336
|
+
# computed, and may be inexact:
|
|
337
|
+
#
|
|
338
|
+
# Complex.rectangular(1.0/3, 1.0/3).abs2 # => 0.2222222222222222
|
|
339
|
+
#
|
|
340
|
+
def abs2: () -> Numeric
|
|
341
|
+
|
|
342
|
+
# <!-- rdoc-file=complex.c -->
|
|
343
|
+
# Returns the argument (angle) for `self` in radians; see [polar
|
|
344
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
345
|
+
#
|
|
346
|
+
# Complex.polar(3, Math::PI/2).arg # => 1.57079632679489660
|
|
347
|
+
#
|
|
348
|
+
# If `self` was created with [rectangular
|
|
349
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
350
|
+
# computed, and may be inexact:
|
|
351
|
+
#
|
|
352
|
+
# Complex.polar(1, 1.0/3).arg # => 0.33333333333333326
|
|
353
|
+
#
|
|
354
|
+
def angle: () -> Float
|
|
355
|
+
|
|
356
|
+
# <!--
|
|
357
|
+
# rdoc-file=complex.c
|
|
358
|
+
# - arg -> float
|
|
359
|
+
# -->
|
|
360
|
+
# Returns the argument (angle) for `self` in radians; see [polar
|
|
361
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
362
|
+
#
|
|
363
|
+
# Complex.polar(3, Math::PI/2).arg # => 1.57079632679489660
|
|
364
|
+
#
|
|
365
|
+
# If `self` was created with [rectangular
|
|
366
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
367
|
+
# computed, and may be inexact:
|
|
368
|
+
#
|
|
369
|
+
# Complex.polar(1, 1.0/3).arg # => 0.33333333333333326
|
|
370
|
+
#
|
|
371
|
+
alias arg angle
|
|
372
|
+
|
|
373
|
+
def ceil: (*untyped) -> bot
|
|
374
|
+
|
|
375
|
+
def coerce: (Numeric) -> [ Complex, Complex ]
|
|
376
|
+
|
|
377
|
+
# <!-- rdoc-file=complex.c -->
|
|
378
|
+
# Returns the conjugate of `self`, `Complex.rect(self.imag, self.real)`:
|
|
379
|
+
#
|
|
380
|
+
# Complex.rect(1, 2).conj # => (1-2i)
|
|
381
|
+
#
|
|
382
|
+
def conj: () -> Complex
|
|
383
|
+
|
|
384
|
+
# <!--
|
|
385
|
+
# rdoc-file=complex.c
|
|
386
|
+
# - conj -> complex
|
|
387
|
+
# -->
|
|
388
|
+
# Returns the conjugate of `self`, `Complex.rect(self.imag, self.real)`:
|
|
389
|
+
#
|
|
390
|
+
# Complex.rect(1, 2).conj # => (1-2i)
|
|
391
|
+
#
|
|
392
|
+
def conjugate: () -> Complex
|
|
393
|
+
|
|
394
|
+
# <!--
|
|
395
|
+
# rdoc-file=complex.c
|
|
396
|
+
# - denominator -> integer
|
|
397
|
+
# -->
|
|
398
|
+
# Returns the denominator of `self`, which is the [least common
|
|
399
|
+
# multiple](https://en.wikipedia.org/wiki/Least_common_multiple) of
|
|
400
|
+
# `self.real.denominator` and `self.imag.denominator`:
|
|
401
|
+
#
|
|
402
|
+
# Complex.rect(Rational(1, 2), Rational(2, 3)).denominator # => 6
|
|
403
|
+
#
|
|
404
|
+
# Note that `n.denominator` of a non-rational numeric is `1`.
|
|
405
|
+
#
|
|
406
|
+
# Related: Complex#numerator.
|
|
407
|
+
#
|
|
408
|
+
def denominator: () -> Integer
|
|
409
|
+
|
|
410
|
+
def div: (Numeric) -> bot
|
|
411
|
+
|
|
412
|
+
def divmod: (Numeric) -> bot
|
|
413
|
+
|
|
414
|
+
def dup: () -> self
|
|
415
|
+
|
|
416
|
+
def eql?: (untyped) -> bool
|
|
417
|
+
|
|
418
|
+
# <!--
|
|
419
|
+
# rdoc-file=complex.c
|
|
420
|
+
# - fdiv(numeric) -> new_complex
|
|
421
|
+
# -->
|
|
422
|
+
# Returns `Complex.rect(self.real/numeric, self.imag/numeric)`:
|
|
423
|
+
#
|
|
424
|
+
# Complex.rect(11, 22).fdiv(3) # => (3.6666666666666665+7.333333333333333i)
|
|
425
|
+
#
|
|
426
|
+
def fdiv: (Numeric) -> Complex
|
|
427
|
+
|
|
428
|
+
# <!--
|
|
429
|
+
# rdoc-file=complex.c
|
|
430
|
+
# - finite? -> true or false
|
|
431
|
+
# -->
|
|
432
|
+
# Returns `true` if both `self.real.finite?` and `self.imag.finite?` are true,
|
|
433
|
+
# `false` otherwise:
|
|
434
|
+
#
|
|
435
|
+
# Complex.rect(1, 1).finite? # => true
|
|
436
|
+
# Complex.rect(Float::INFINITY, 0).finite? # => false
|
|
437
|
+
#
|
|
438
|
+
# Related: Numeric#finite?, Float#finite?.
|
|
439
|
+
#
|
|
440
|
+
def finite?: () -> bool
|
|
441
|
+
|
|
442
|
+
def floor: (?Integer) -> bot
|
|
443
|
+
|
|
444
|
+
# <!--
|
|
445
|
+
# rdoc-file=complex.c
|
|
446
|
+
# - hash -> integer
|
|
447
|
+
# -->
|
|
448
|
+
# Returns the integer hash value for `self`.
|
|
449
|
+
#
|
|
450
|
+
# Two Complex objects created from the same values will have the same hash value
|
|
451
|
+
# (and will compare using #eql?):
|
|
452
|
+
#
|
|
453
|
+
# Complex.rect(1, 2).hash == Complex.rect(1, 2).hash # => true
|
|
454
|
+
#
|
|
455
|
+
def hash: () -> Integer
|
|
456
|
+
|
|
457
|
+
def i: () -> bot
|
|
458
|
+
|
|
459
|
+
# <!-- rdoc-file=complex.c -->
|
|
460
|
+
# Returns the imaginary value for `self`:
|
|
461
|
+
#
|
|
462
|
+
# Complex.rect(7).imag # => 0
|
|
463
|
+
# Complex.rect(9, -4).imag # => -4
|
|
464
|
+
#
|
|
465
|
+
# If `self` was created with [polar
|
|
466
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
|
467
|
+
# computed, and may be inexact:
|
|
468
|
+
#
|
|
469
|
+
# Complex.polar(1, Math::PI/4).imag # => 0.7071067811865476 # Square root of 2.
|
|
470
|
+
#
|
|
471
|
+
def imag: () -> Numeric
|
|
472
|
+
|
|
473
|
+
# <!--
|
|
474
|
+
# rdoc-file=complex.c
|
|
475
|
+
# - imag -> numeric
|
|
476
|
+
# -->
|
|
477
|
+
# Returns the imaginary value for `self`:
|
|
478
|
+
#
|
|
479
|
+
# Complex.rect(7).imag # => 0
|
|
480
|
+
# Complex.rect(9, -4).imag # => -4
|
|
481
|
+
#
|
|
482
|
+
# If `self` was created with [polar
|
|
483
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
|
484
|
+
# computed, and may be inexact:
|
|
485
|
+
#
|
|
486
|
+
# Complex.polar(1, Math::PI/4).imag # => 0.7071067811865476 # Square root of 2.
|
|
487
|
+
#
|
|
488
|
+
def imaginary: () -> Numeric
|
|
489
|
+
|
|
490
|
+
# <!--
|
|
491
|
+
# rdoc-file=complex.c
|
|
492
|
+
# - infinite? -> 1 or nil
|
|
493
|
+
# -->
|
|
494
|
+
# Returns `1` if either `self.real.infinite?` or `self.imag.infinite?` is true,
|
|
495
|
+
# `nil` otherwise:
|
|
496
|
+
#
|
|
497
|
+
# Complex.rect(Float::INFINITY, 0).infinite? # => 1
|
|
498
|
+
# Complex.rect(1, 1).infinite? # => nil
|
|
499
|
+
#
|
|
500
|
+
# Related: Numeric#infinite?, Float#infinite?.
|
|
501
|
+
#
|
|
502
|
+
def infinite?: () -> Integer?
|
|
503
|
+
|
|
504
|
+
# <!--
|
|
505
|
+
# rdoc-file=complex.c
|
|
506
|
+
# - inspect -> string
|
|
507
|
+
# -->
|
|
508
|
+
# Returns a string representation of `self`:
|
|
509
|
+
#
|
|
510
|
+
# Complex.rect(2).inspect # => "(2+0i)"
|
|
511
|
+
# Complex.rect(-8, 6).inspect # => "(-8+6i)"
|
|
512
|
+
# Complex.rect(0, Rational(1, 2)).inspect # => "(0+(1/2)*i)"
|
|
513
|
+
# Complex.rect(0, Float::INFINITY).inspect # => "(0+Infinity*i)"
|
|
514
|
+
# Complex.rect(Float::NAN, Float::NAN).inspect # => "(NaN+NaN*i)"
|
|
515
|
+
#
|
|
516
|
+
def inspect: () -> String
|
|
517
|
+
|
|
518
|
+
def integer?: () -> bool
|
|
519
|
+
|
|
520
|
+
# <!-- rdoc-file=complex.c -->
|
|
521
|
+
# Returns the absolute value (magnitude) for `self`; see [polar
|
|
522
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
523
|
+
#
|
|
524
|
+
# Complex.polar(-1, 0).abs # => 1.0
|
|
525
|
+
#
|
|
526
|
+
# If `self` was created with [rectangular
|
|
527
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
528
|
+
# computed, and may be inexact:
|
|
529
|
+
#
|
|
530
|
+
# Complex.rectangular(1, 1).abs # => 1.4142135623730951 # The square root of 2.
|
|
531
|
+
#
|
|
532
|
+
alias magnitude abs
|
|
533
|
+
|
|
534
|
+
def modulo: (Numeric) -> bot
|
|
535
|
+
|
|
536
|
+
def negative?: () -> bot
|
|
537
|
+
|
|
538
|
+
def nonzero?: () -> self?
|
|
539
|
+
|
|
540
|
+
# <!--
|
|
541
|
+
# rdoc-file=complex.c
|
|
542
|
+
# - numerator -> new_complex
|
|
543
|
+
# -->
|
|
544
|
+
# Returns the Complex object created from the numerators of the real and
|
|
545
|
+
# imaginary parts of `self`, after converting each part to the [lowest common
|
|
546
|
+
# denominator](https://en.wikipedia.org/wiki/Lowest_common_denominator) of the
|
|
547
|
+
# two:
|
|
548
|
+
#
|
|
549
|
+
# c = Complex.rect(Rational(2, 3), Rational(3, 4)) # => ((2/3)+(3/4)*i)
|
|
550
|
+
# c.numerator # => (8+9i)
|
|
551
|
+
#
|
|
552
|
+
# In this example, the lowest common denominator of the two parts is 12; the two
|
|
553
|
+
# converted parts may be thought of as Rational(8, 12) and Rational(9, 12),
|
|
554
|
+
# whose numerators, respectively, are 8 and 9; so the returned value of
|
|
555
|
+
# `c.numerator` is `Complex.rect(8, 9)`.
|
|
556
|
+
#
|
|
557
|
+
# Related: Complex#denominator.
|
|
558
|
+
#
|
|
559
|
+
def numerator: () -> Complex
|
|
560
|
+
|
|
561
|
+
# <!-- rdoc-file=complex.c -->
|
|
562
|
+
# Returns the argument (angle) for `self` in radians; see [polar
|
|
563
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
564
|
+
#
|
|
565
|
+
# Complex.polar(3, Math::PI/2).arg # => 1.57079632679489660
|
|
566
|
+
#
|
|
567
|
+
# If `self` was created with [rectangular
|
|
568
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
569
|
+
# computed, and may be inexact:
|
|
570
|
+
#
|
|
571
|
+
# Complex.polar(1, 1.0/3).arg # => 0.33333333333333326
|
|
572
|
+
#
|
|
573
|
+
alias phase angle
|
|
574
|
+
|
|
575
|
+
# <!--
|
|
576
|
+
# rdoc-file=complex.c
|
|
577
|
+
# - polar -> array
|
|
578
|
+
# -->
|
|
579
|
+
# Returns the array `[self.abs, self.arg]`:
|
|
580
|
+
#
|
|
581
|
+
# Complex.polar(1, 2).polar # => [1.0, 2.0]
|
|
582
|
+
#
|
|
583
|
+
# See [Polar Coordinates](rdoc-ref:Complex@Polar+Coordinates).
|
|
584
|
+
#
|
|
585
|
+
# If `self` was created with [rectangular
|
|
586
|
+
# coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
|
|
587
|
+
# computed, and may be inexact:
|
|
588
|
+
#
|
|
589
|
+
# Complex.rect(1, 1).polar # => [1.4142135623730951, 0.7853981633974483]
|
|
590
|
+
#
|
|
591
|
+
def polar: () -> [ Numeric, Float ]
|
|
592
|
+
|
|
593
|
+
def positive?: () -> bot
|
|
594
|
+
|
|
595
|
+
# <!--
|
|
596
|
+
# rdoc-file=complex.c
|
|
597
|
+
# - complex / numeric -> new_complex
|
|
598
|
+
# -->
|
|
599
|
+
# Returns the quotient of `self` and `numeric`:
|
|
600
|
+
#
|
|
601
|
+
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
|
602
|
+
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
|
603
|
+
# Complex.rect(-2, 9) / Complex.rect(-9, 2) # => ((36/85)-(77/85)*i)
|
|
604
|
+
# Complex.rect(9, 8) / 4 # => ((9/4)+2i)
|
|
605
|
+
# Complex.rect(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
|
|
606
|
+
#
|
|
607
|
+
def quo: (Numeric) -> Complex
|
|
608
|
+
|
|
609
|
+
# <!--
|
|
610
|
+
# rdoc-file=complex.c
|
|
611
|
+
# - rationalize(epsilon = nil) -> rational
|
|
612
|
+
# -->
|
|
613
|
+
# Returns a Rational object whose value is exactly or approximately equivalent
|
|
614
|
+
# to that of `self.real`.
|
|
615
|
+
#
|
|
616
|
+
# With no argument `epsilon` given, returns a Rational object whose value is
|
|
617
|
+
# exactly equal to that of `self.real.rationalize`:
|
|
618
|
+
#
|
|
619
|
+
# Complex.rect(1, 0).rationalize # => (1/1)
|
|
620
|
+
# Complex.rect(1, Rational(0, 1)).rationalize # => (1/1)
|
|
621
|
+
# Complex.rect(3.14159, 0).rationalize # => (314159/100000)
|
|
622
|
+
#
|
|
623
|
+
# With argument `epsilon` given, returns a Rational object whose value is
|
|
624
|
+
# exactly or approximately equal to that of `self.real` to the given precision:
|
|
625
|
+
#
|
|
626
|
+
# Complex.rect(3.14159, 0).rationalize(0.1) # => (16/5)
|
|
627
|
+
# Complex.rect(3.14159, 0).rationalize(0.01) # => (22/7)
|
|
628
|
+
# Complex.rect(3.14159, 0).rationalize(0.001) # => (201/64)
|
|
629
|
+
# Complex.rect(3.14159, 0).rationalize(0.0001) # => (333/106)
|
|
630
|
+
# Complex.rect(3.14159, 0).rationalize(0.00001) # => (355/113)
|
|
631
|
+
# Complex.rect(3.14159, 0).rationalize(0.000001) # => (7433/2366)
|
|
632
|
+
# Complex.rect(3.14159, 0).rationalize(0.0000001) # => (9208/2931)
|
|
633
|
+
# Complex.rect(3.14159, 0).rationalize(0.00000001) # => (47460/15107)
|
|
634
|
+
# Complex.rect(3.14159, 0).rationalize(0.000000001) # => (76149/24239)
|
|
635
|
+
# Complex.rect(3.14159, 0).rationalize(0.0000000001) # => (314159/100000)
|
|
636
|
+
# Complex.rect(3.14159, 0).rationalize(0.0) # => (3537115888337719/1125899906842624)
|
|
637
|
+
#
|
|
638
|
+
# Related: Complex#to_r.
|
|
639
|
+
#
|
|
640
|
+
def rationalize: (?Numeric eps) -> Rational
|
|
641
|
+
|
|
642
|
+
# <!--
|
|
643
|
+
# rdoc-file=complex.c
|
|
644
|
+
# - real -> numeric
|
|
645
|
+
# -->
|
|
646
|
+
# Returns the real value for `self`:
|
|
647
|
+
#
|
|
648
|
+
# Complex.rect(7).real # => 7
|
|
649
|
+
# Complex.rect(9, -4).real # => 9
|
|
650
|
+
#
|
|
651
|
+
# If `self` was created with [polar
|
|
652
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
|
653
|
+
# computed, and may be inexact:
|
|
654
|
+
#
|
|
655
|
+
# Complex.polar(1, Math::PI/4).real # => 0.7071067811865476 # Square root of 2.
|
|
656
|
+
#
|
|
657
|
+
def real: () -> Numeric
|
|
658
|
+
|
|
659
|
+
# <!--
|
|
660
|
+
# rdoc-file=complex.c
|
|
661
|
+
# - real? -> false
|
|
662
|
+
# -->
|
|
663
|
+
# Returns `false`; for compatibility with Numeric#real?.
|
|
664
|
+
#
|
|
665
|
+
def real?: () -> false
|
|
666
|
+
|
|
667
|
+
# <!-- rdoc-file=complex.c -->
|
|
668
|
+
# Returns a new Complex object formed from the arguments, each of which must be
|
|
669
|
+
# an instance of Numeric, or an instance of one of its subclasses: Complex,
|
|
670
|
+
# Float, Integer, Rational; see [Rectangular
|
|
671
|
+
# Coordinates](rdoc-ref:Complex@Rectangular+Coordinates):
|
|
672
|
+
#
|
|
673
|
+
# Complex.rect(3) # => (3+0i)
|
|
674
|
+
# Complex.rect(3, Math::PI) # => (3+3.141592653589793i)
|
|
675
|
+
# Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i)
|
|
676
|
+
#
|
|
677
|
+
# Complex.rectangular is an alias for Complex.rect.
|
|
678
|
+
#
|
|
679
|
+
def rect: () -> [ Numeric, Numeric ]
|
|
680
|
+
|
|
681
|
+
# <!--
|
|
682
|
+
# rdoc-file=complex.c
|
|
683
|
+
# - rect -> array
|
|
684
|
+
# -->
|
|
685
|
+
# Returns the array `[self.real, self.imag]`:
|
|
686
|
+
#
|
|
687
|
+
# Complex.rect(1, 2).rect # => [1, 2]
|
|
688
|
+
#
|
|
689
|
+
# See [Rectangular Coordinates](rdoc-ref:Complex@Rectangular+Coordinates).
|
|
690
|
+
#
|
|
691
|
+
# If `self` was created with [polar
|
|
692
|
+
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
|
693
|
+
# computed, and may be inexact:
|
|
694
|
+
#
|
|
695
|
+
# Complex.polar(1.0, 1.0).rect # => [0.5403023058681398, 0.8414709848078965]
|
|
696
|
+
#
|
|
697
|
+
# Complex#rectangular is an alias for Complex#rect.
|
|
698
|
+
#
|
|
699
|
+
alias rectangular rect
|
|
700
|
+
|
|
701
|
+
def reminder: (Numeric) -> bot
|
|
702
|
+
|
|
703
|
+
def round: (*untyped) -> bot
|
|
704
|
+
|
|
705
|
+
def step: (*untyped) ?{ (*untyped) -> untyped } -> bot
|
|
706
|
+
|
|
707
|
+
# <!--
|
|
708
|
+
# rdoc-file=complex.c
|
|
709
|
+
# - to_c -> self
|
|
710
|
+
# -->
|
|
711
|
+
# Returns `self`.
|
|
712
|
+
#
|
|
713
|
+
def to_c: () -> Complex
|
|
714
|
+
|
|
715
|
+
# <!--
|
|
716
|
+
# rdoc-file=complex.c
|
|
717
|
+
# - to_f -> float
|
|
718
|
+
# -->
|
|
719
|
+
# Returns the value of `self.real` as a Float, if possible:
|
|
720
|
+
#
|
|
721
|
+
# Complex.rect(1, 0).to_f # => 1.0
|
|
722
|
+
# Complex.rect(1, Rational(0, 1)).to_f # => 1.0
|
|
723
|
+
#
|
|
724
|
+
# Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
|
|
725
|
+
# `Rational(0, *n*)`).
|
|
726
|
+
#
|
|
727
|
+
def to_f: () -> Float
|
|
728
|
+
|
|
729
|
+
# <!--
|
|
730
|
+
# rdoc-file=complex.c
|
|
731
|
+
# - to_i -> integer
|
|
732
|
+
# -->
|
|
733
|
+
# Returns the value of `self.real` as an Integer, if possible:
|
|
734
|
+
#
|
|
735
|
+
# Complex.rect(1, 0).to_i # => 1
|
|
736
|
+
# Complex.rect(1, Rational(0, 1)).to_i # => 1
|
|
737
|
+
#
|
|
738
|
+
# Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
|
|
739
|
+
# `Rational(0, *n*)`).
|
|
740
|
+
#
|
|
741
|
+
def to_i: () -> Integer
|
|
742
|
+
|
|
743
|
+
alias to_int to_i
|
|
744
|
+
|
|
745
|
+
# <!--
|
|
746
|
+
# rdoc-file=complex.c
|
|
747
|
+
# - to_r -> rational
|
|
748
|
+
# -->
|
|
749
|
+
# Returns the value of `self.real` as a Rational, if possible:
|
|
750
|
+
#
|
|
751
|
+
# Complex.rect(1, 0).to_r # => (1/1)
|
|
752
|
+
# Complex.rect(1, Rational(0, 1)).to_r # => (1/1)
|
|
753
|
+
# Complex.rect(1, 0.0).to_r # => (1/1)
|
|
754
|
+
#
|
|
755
|
+
# Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
|
|
756
|
+
# `Rational(0, *n*)`) and `self.imag.to_r` is not exactly zero.
|
|
757
|
+
#
|
|
758
|
+
# Related: Complex#rationalize.
|
|
759
|
+
#
|
|
760
|
+
def to_r: () -> Rational
|
|
761
|
+
|
|
762
|
+
# <!--
|
|
763
|
+
# rdoc-file=complex.c
|
|
764
|
+
# - to_s -> string
|
|
765
|
+
# -->
|
|
766
|
+
# Returns a string representation of `self`:
|
|
767
|
+
#
|
|
768
|
+
# Complex.rect(2).to_s # => "2+0i"
|
|
769
|
+
# Complex.rect(-8, 6).to_s # => "-8+6i"
|
|
770
|
+
# Complex.rect(0, Rational(1, 2)).to_s # => "0+1/2i"
|
|
771
|
+
# Complex.rect(0, Float::INFINITY).to_s # => "0+Infinity*i"
|
|
772
|
+
# Complex.rect(Float::NAN, Float::NAN).to_s # => "NaN+NaN*i"
|
|
773
|
+
#
|
|
774
|
+
def to_s: () -> String
|
|
775
|
+
|
|
776
|
+
def truncate: (?Integer) -> bot
|
|
777
|
+
|
|
778
|
+
def zero?: () -> bool
|
|
779
|
+
end
|
|
780
|
+
|
|
781
|
+
# <!-- rdoc-file=complex.c -->
|
|
782
|
+
# Equivalent to `Complex.rect(0, 1)`:
|
|
783
|
+
#
|
|
784
|
+
# Complex::I # => (0+1i)
|
|
785
|
+
#
|
|
786
|
+
Complex::I: Complex
|