rbs 4.1.0.pre.2-java
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/.clang-format +75 -0
- data/.clangd +2 -0
- data/.github/dependabot.yml +24 -0
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +61 -0
- data/.github/workflows/comments.yml +37 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +158 -0
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +39 -0
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +49 -0
- data/.gitignore +38 -0
- data/.rubocop.yml +72 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +2292 -0
- data/COPYING +56 -0
- data/README.md +240 -0
- data/Rakefile +869 -0
- data/Steepfile +53 -0
- data/config.yml +913 -0
- data/core/array.rbs +4142 -0
- data/core/basic_object.rbs +376 -0
- data/core/binding.rbs +148 -0
- data/core/builtin.rbs +278 -0
- data/core/class.rbs +223 -0
- data/core/comparable.rbs +192 -0
- data/core/complex.rbs +812 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +993 -0
- data/core/encoding.rbs +1368 -0
- data/core/enumerable.rbs +2506 -0
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +705 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +682 -0
- data/core/errors.rbs +789 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +570 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2045 -0
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1316 -0
- data/core/gc.rbs +788 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +2183 -0
- data/core/integer.rbs +1374 -0
- data/core/io/buffer.rbs +995 -0
- data/core/io/wait.rbs +48 -0
- data/core/io.rbs +3472 -0
- data/core/kernel.rbs +3172 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +637 -0
- data/core/math.rbs +770 -0
- data/core/method.rbs +422 -0
- data/core/module.rbs +1856 -0
- data/core/nil_class.rbs +210 -0
- data/core/numeric.rbs +832 -0
- data/core/object.rbs +108 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +197 -0
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +905 -0
- data/core/process.rbs +2316 -0
- data/core/ractor.rbs +924 -0
- data/core/random.rbs +255 -0
- data/core/range.rbs +1209 -0
- data/core/rational.rbs +502 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +1236 -0
- data/core/rbs/unnamed/env_class.rbs +1214 -0
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +186 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1974 -0
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +809 -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 +109 -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 +1105 -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 +293 -0
- data/core/set.rbs +751 -0
- data/core/signal.rbs +110 -0
- data/core/string.rbs +5532 -0
- data/core/struct.rbs +668 -0
- data/core/symbol.rbs +482 -0
- data/core/thread.rbs +1826 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1793 -0
- data/core/trace_point.rbs +483 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +337 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +107 -0
- data/docs/aliases.md +79 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/config.md +171 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +56 -0
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/rust.md +96 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +940 -0
- data/docs/tools.md +17 -0
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/ast_translation.c +1855 -0
- data/ext/rbs_extension/ast_translation.h +41 -0
- data/ext/rbs_extension/class_constants.c +187 -0
- data/ext/rbs_extension/class_constants.h +104 -0
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +40 -0
- data/ext/rbs_extension/legacy_location.c +294 -0
- data/ext/rbs_extension/legacy_location.h +82 -0
- data/ext/rbs_extension/main.c +613 -0
- data/ext/rbs_extension/rbs_extension.h +16 -0
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/ast.h +1047 -0
- data/include/rbs/defines.h +99 -0
- data/include/rbs/lexer.h +207 -0
- data/include/rbs/location.h +40 -0
- data/include/rbs/parser.h +153 -0
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +155 -0
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +14 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +82 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +398 -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 +472 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/ruby/annotations.rb +451 -0
- data/lib/rbs/ast/ruby/comment_block.rb +247 -0
- data/lib/rbs/ast/ruby/declarations.rb +291 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +762 -0
- data/lib/rbs/ast/type_param.rb +235 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +189 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +84 -0
- data/lib/rbs/cli/validate.rb +294 -0
- data/lib/rbs/cli.rb +1253 -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 +269 -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 +265 -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 +415 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
- data/lib/rbs/definition_builder/method_builder.rb +295 -0
- data/lib/rbs/definition_builder.rb +1054 -0
- data/lib/rbs/diff.rb +131 -0
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +1028 -0
- data/lib/rbs/environment_loader.rb +167 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +634 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +568 -0
- data/lib/rbs/location_aux.rb +170 -0
- data/lib/rbs/locator.rb +247 -0
- data/lib/rbs/method_type.rb +145 -0
- data/lib/rbs/namespace.rb +154 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +142 -0
- data/lib/rbs/prototype/helpers.rb +197 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +816 -0
- data/lib/rbs/prototype/rbi.rb +625 -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 +680 -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 +167 -0
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +204 -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 +457 -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 +122 -0
- data/lib/rbs/types.rb +1604 -0
- data/lib/rbs/unit_test/convertibles.rb +177 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +383 -0
- data/lib/rbs/unit_test/with_aliases.rb +145 -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/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
- data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
- data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
- data/lib/rbs/wasm/jars/asm-util.jar +0 -0
- data/lib/rbs/wasm/jars/asm.jar +0 -0
- data/lib/rbs/wasm/jars/compiler.jar +0 -0
- data/lib/rbs/wasm/jars/log.jar +0 -0
- data/lib/rbs/wasm/jars/runtime.jar +0 -0
- data/lib/rbs/wasm/jars/wasi.jar +0 -0
- data/lib/rbs/wasm/jars/wasm.jar +0 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/rbs_parser.wasm +0 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +117 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs.gemspec +68 -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 +52 -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 +85 -0
- data/sig/annotate/rdoc_source.rbs +32 -0
- data/sig/annotation.rbs +27 -0
- data/sig/ast/ruby/annotations.rbs +470 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +198 -0
- data/sig/buffer.rbs +108 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +15 -0
- data/sig/cli/validate.rbs +47 -0
- data/sig/cli.rbs +89 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +68 -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 +274 -0
- data/sig/definition.rbs +232 -0
- data/sig/definition_builder.rbs +181 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +286 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +408 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +126 -0
- data/sig/location.rbs +135 -0
- data/sig/locator.rbs +56 -0
- data/sig/manifest.yaml +5 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +89 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +161 -0
- data/sig/parser.rbs +164 -0
- data/sig/prototype/helpers.rbs +29 -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 +61 -0
- data/sig/rewriter.rbs +45 -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/source.rbs +48 -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 +115 -0
- data/sig/typename.rbs +89 -0
- data/sig/types.rbs +578 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +22 -0
- data/sig/unit_test/type_assertions.rbs +211 -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/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/sig/writer.rbs +127 -0
- data/src/ast.c +1628 -0
- data/src/lexer.c +3217 -0
- data/src/lexer.re +155 -0
- data/src/lexstate.c +217 -0
- data/src/location.c +31 -0
- data/src/parser.c +4255 -0
- data/src/serialize.c +958 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +162 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +268 -0
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -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 +1647 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +911 -0
- data/stdlib/cgi/0/manifest.yaml +4 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +266 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1598 -0
- data/stdlib/date/0/date_time.rbs +617 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +187 -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 +344 -0
- data/stdlib/digest/0/digest.rbs +687 -0
- data/stdlib/erb/0/erb.rbs +933 -0
- data/stdlib/etc/0/etc.rbs +884 -0
- data/stdlib/fileutils/0/fileutils.rbs +1753 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +271 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
- data/stdlib/json/0/json.rbs +1963 -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 +5580 -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 +470 -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 +433 -0
- data/stdlib/open3/0/open3.rbs +606 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12231 -0
- data/stdlib/optparse/0/optparse.rbs +1734 -0
- data/stdlib/pathname/0/pathname.rbs +36 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +301 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +608 -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 +455 -0
- data/stdlib/psych/0/store.rbs +57 -0
- data/stdlib/pty/0/pty.rbs +240 -0
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +52 -0
- data/stdlib/rdoc/0/comment.rbs +61 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +393 -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 +1787 -0
- data/stdlib/ripper/0/ripper.rbs +1654 -0
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +49 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +134 -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 +94 -0
- data/stdlib/socket/0/socket.rbs +4170 -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 +87 -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 +1681 -0
- data/stdlib/strscan/0/string_scanner.rbs +1648 -0
- data/stdlib/tempfile/0/tempfile.rbs +483 -0
- data/stdlib/time/0/time.rbs +434 -0
- data/stdlib/timeout/0/timeout.rbs +137 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +8 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +410 -0
- data/stdlib/uri/0/common.rbs +621 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1116 -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 +211 -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 +168 -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 +201 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +660 -0
data/core/float.rbs
ADDED
|
@@ -0,0 +1,1316 @@
|
|
|
1
|
+
# <!-- rdoc-file=float.rb -->
|
|
2
|
+
# A Float object stores a real number using the native architecture's
|
|
3
|
+
# double-precision floating-point representation.
|
|
4
|
+
#
|
|
5
|
+
# ## Float Imprecisions
|
|
6
|
+
#
|
|
7
|
+
# Some real numbers can be represented precisely as Float objects:
|
|
8
|
+
#
|
|
9
|
+
# 37.5 # => 37.5
|
|
10
|
+
# 98.75 # => 98.75
|
|
11
|
+
# 12.3125 # => 12.3125
|
|
12
|
+
#
|
|
13
|
+
# Others cannot; among these are the transcendental numbers, including:
|
|
14
|
+
#
|
|
15
|
+
# * Pi, <em>π</em>: in mathematics, a number of infinite precision:
|
|
16
|
+
# 3.1415926535897932384626433... (to 25 places); in Ruby, it is of limited
|
|
17
|
+
# precision (in this case, to 16 decimal places):
|
|
18
|
+
#
|
|
19
|
+
# Math::PI # => 3.141592653589793
|
|
20
|
+
#
|
|
21
|
+
# * Euler's number, *e*: in mathematics, a number of infinite precision:
|
|
22
|
+
# 2.7182818284590452353602874... (to 25 places); in Ruby, it is of limited
|
|
23
|
+
# precision (in this case, to 15 decimal places):
|
|
24
|
+
#
|
|
25
|
+
# Math::E # => 2.718281828459045
|
|
26
|
+
#
|
|
27
|
+
# Some floating-point computations in Ruby give precise results:
|
|
28
|
+
#
|
|
29
|
+
# 1.0/2 # => 0.5
|
|
30
|
+
# 100.0/8 # => 12.5
|
|
31
|
+
#
|
|
32
|
+
# Others do not:
|
|
33
|
+
#
|
|
34
|
+
# * In mathematics, 2/3 as a decimal number is an infinitely-repeating
|
|
35
|
+
# decimal: 0.666... (forever); in Ruby, <code>2.0/3</code> is of limited
|
|
36
|
+
# precision (in this case, to 16 decimal places):
|
|
37
|
+
#
|
|
38
|
+
# 2.0/3 # => 0.6666666666666666
|
|
39
|
+
#
|
|
40
|
+
# * In mathematics, the square root of 2 is an irrational number of infinite
|
|
41
|
+
# precision: 1.4142135623730950488016887... (to 25 decimal places); in Ruby,
|
|
42
|
+
# it is of limited precision (in this case, to 16 decimal places):
|
|
43
|
+
#
|
|
44
|
+
# Math.sqrt(2.0) # => 1.4142135623730951
|
|
45
|
+
#
|
|
46
|
+
# * Even a simple computation can introduce imprecision:
|
|
47
|
+
#
|
|
48
|
+
# x = 0.1 + 0.2 # => 0.30000000000000004
|
|
49
|
+
# y = 0.3 # => 0.3
|
|
50
|
+
# x == y # => false
|
|
51
|
+
#
|
|
52
|
+
# See:
|
|
53
|
+
#
|
|
54
|
+
# * https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
|
|
55
|
+
# * https://github.com/rdp/ruby_tutorials_core/wiki/Ruby-Talk-FAQ#-why-are-rub
|
|
56
|
+
# ys-floats-imprecise
|
|
57
|
+
# * https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
|
|
58
|
+
#
|
|
59
|
+
# Note that precise storage and computation of rational numbers is possible
|
|
60
|
+
# using Rational objects.
|
|
61
|
+
#
|
|
62
|
+
# ## Creating a Float
|
|
63
|
+
#
|
|
64
|
+
# You can create a Float object explicitly with:
|
|
65
|
+
#
|
|
66
|
+
# * A [floating-point literal](rdoc-ref:syntax/literals.rdoc@Float+Literals).
|
|
67
|
+
#
|
|
68
|
+
# You can convert certain objects to Floats with:
|
|
69
|
+
#
|
|
70
|
+
# * Method #Float.
|
|
71
|
+
#
|
|
72
|
+
# ## What's Here
|
|
73
|
+
#
|
|
74
|
+
# First, what's elsewhere. Class Float:
|
|
75
|
+
#
|
|
76
|
+
# * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here) and [class
|
|
77
|
+
# Object](rdoc-ref:Object@What-27s+Here).
|
|
78
|
+
# * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
|
|
79
|
+
#
|
|
80
|
+
# Here, class Float provides methods for:
|
|
81
|
+
#
|
|
82
|
+
# * [Querying](rdoc-ref:Float@Querying)
|
|
83
|
+
# * [Comparing](rdoc-ref:Float@Comparing)
|
|
84
|
+
# * [Converting](rdoc-ref:Float@Converting)
|
|
85
|
+
#
|
|
86
|
+
# ### Querying
|
|
87
|
+
#
|
|
88
|
+
# * #finite?: Returns whether `self` is finite.
|
|
89
|
+
# * #hash: Returns the integer hash code for `self`.
|
|
90
|
+
# * #infinite?: Returns whether `self` is infinite.
|
|
91
|
+
# * #nan?: Returns whether `self` is a NaN (not-a-number).
|
|
92
|
+
#
|
|
93
|
+
# ### Comparing
|
|
94
|
+
#
|
|
95
|
+
# * #<: Returns whether `self` is less than the given value.
|
|
96
|
+
# * #<=: Returns whether `self` is less than or equal to the given value.
|
|
97
|
+
# * #<=>: Returns a number indicating whether `self` is less than, equal to,
|
|
98
|
+
# or greater than the given value.
|
|
99
|
+
# * #== (aliased as #=== and #eql?): Returns whether `self` is equal to the
|
|
100
|
+
# given value.
|
|
101
|
+
# * #>: Returns whether `self` is greater than the given value.
|
|
102
|
+
# * #>=: Returns whether `self` is greater than or equal to the given value.
|
|
103
|
+
#
|
|
104
|
+
# ### Converting
|
|
105
|
+
#
|
|
106
|
+
# * #% (aliased as #modulo): Returns `self` modulo the given value.
|
|
107
|
+
# * #*: Returns the product of `self` and the given value.
|
|
108
|
+
# * #**: Returns the value of `self` raised to the power of the given value.
|
|
109
|
+
# * #+: Returns the sum of `self` and the given value.
|
|
110
|
+
# * #-: Returns the difference of `self` and the given value.
|
|
111
|
+
# * #/: Returns the quotient of `self` and the given value.
|
|
112
|
+
# * #ceil: Returns the smallest number greater than or equal to `self`.
|
|
113
|
+
# * #coerce: Returns a 2-element array containing the given value converted to
|
|
114
|
+
# a Float and `self`
|
|
115
|
+
# * #divmod: Returns a 2-element array containing the quotient and remainder
|
|
116
|
+
# results of dividing `self` by the given value.
|
|
117
|
+
# * #fdiv: Returns the Float result of dividing `self` by the given value.
|
|
118
|
+
# * #floor: Returns the greatest number smaller than or equal to `self`.
|
|
119
|
+
# * #next_float: Returns the next-larger representable Float.
|
|
120
|
+
# * #prev_float: Returns the next-smaller representable Float.
|
|
121
|
+
# * #quo: Returns the quotient from dividing `self` by the given value.
|
|
122
|
+
# * #round: Returns `self` rounded to the nearest value, to a given precision.
|
|
123
|
+
# * #to_i (aliased as #to_int): Returns `self` truncated to an Integer.
|
|
124
|
+
# * #to_s (aliased as #inspect): Returns a string containing the place-value
|
|
125
|
+
# representation of `self` in the given radix.
|
|
126
|
+
# * #truncate: Returns `self` truncated to a given precision.
|
|
127
|
+
#
|
|
128
|
+
# <!-- rdoc-file=float.rb -->
|
|
129
|
+
# A Float object stores a real number using the native architecture's
|
|
130
|
+
# double-precision floating-point representation.
|
|
131
|
+
#
|
|
132
|
+
# ## Float Imprecisions
|
|
133
|
+
#
|
|
134
|
+
# Some real numbers can be represented precisely as Float objects:
|
|
135
|
+
#
|
|
136
|
+
# 37.5 # => 37.5
|
|
137
|
+
# 98.75 # => 98.75
|
|
138
|
+
# 12.3125 # => 12.3125
|
|
139
|
+
#
|
|
140
|
+
# Others cannot; among these are the transcendental numbers, including:
|
|
141
|
+
#
|
|
142
|
+
# * Pi, <em>π</em>: in mathematics, a number of infinite precision:
|
|
143
|
+
# 3.1415926535897932384626433... (to 25 places); in Ruby, it is of limited
|
|
144
|
+
# precision (in this case, to 16 decimal places):
|
|
145
|
+
#
|
|
146
|
+
# Math::PI # => 3.141592653589793
|
|
147
|
+
#
|
|
148
|
+
# * Euler's number, *e*: in mathematics, a number of infinite precision:
|
|
149
|
+
# 2.7182818284590452353602874... (to 25 places); in Ruby, it is of limited
|
|
150
|
+
# precision (in this case, to 15 decimal places):
|
|
151
|
+
#
|
|
152
|
+
# Math::E # => 2.718281828459045
|
|
153
|
+
#
|
|
154
|
+
# Some floating-point computations in Ruby give precise results:
|
|
155
|
+
#
|
|
156
|
+
# 1.0/2 # => 0.5
|
|
157
|
+
# 100.0/8 # => 12.5
|
|
158
|
+
#
|
|
159
|
+
# Others do not:
|
|
160
|
+
#
|
|
161
|
+
# * In mathematics, 2/3 as a decimal number is an infinitely-repeating
|
|
162
|
+
# decimal: 0.666... (forever); in Ruby, <code>2.0/3</code> is of limited
|
|
163
|
+
# precision (in this case, to 16 decimal places):
|
|
164
|
+
#
|
|
165
|
+
# 2.0/3 # => 0.6666666666666666
|
|
166
|
+
#
|
|
167
|
+
# * In mathematics, the square root of 2 is an irrational number of infinite
|
|
168
|
+
# precision: 1.4142135623730950488016887... (to 25 decimal places); in Ruby,
|
|
169
|
+
# it is of limited precision (in this case, to 16 decimal places):
|
|
170
|
+
#
|
|
171
|
+
# Math.sqrt(2.0) # => 1.4142135623730951
|
|
172
|
+
#
|
|
173
|
+
# * Even a simple computation can introduce imprecision:
|
|
174
|
+
#
|
|
175
|
+
# x = 0.1 + 0.2 # => 0.30000000000000004
|
|
176
|
+
# y = 0.3 # => 0.3
|
|
177
|
+
# x == y # => false
|
|
178
|
+
#
|
|
179
|
+
# See:
|
|
180
|
+
#
|
|
181
|
+
# * https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
|
|
182
|
+
# * https://github.com/rdp/ruby_tutorials_core/wiki/Ruby-Talk-FAQ#-why-are-rub
|
|
183
|
+
# ys-floats-imprecise
|
|
184
|
+
# * https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
|
|
185
|
+
#
|
|
186
|
+
# Note that precise storage and computation of rational numbers is possible
|
|
187
|
+
# using Rational objects.
|
|
188
|
+
#
|
|
189
|
+
# ## Creating a Float
|
|
190
|
+
#
|
|
191
|
+
# You can create a Float object explicitly with:
|
|
192
|
+
#
|
|
193
|
+
# * A [floating-point literal](rdoc-ref:syntax/literals.rdoc@Float+Literals).
|
|
194
|
+
#
|
|
195
|
+
# You can convert certain objects to Floats with:
|
|
196
|
+
#
|
|
197
|
+
# * Method #Float.
|
|
198
|
+
#
|
|
199
|
+
# ## What's Here
|
|
200
|
+
#
|
|
201
|
+
# First, what's elsewhere. Class Float:
|
|
202
|
+
#
|
|
203
|
+
# * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here) and [class
|
|
204
|
+
# Object](rdoc-ref:Object@What-27s+Here).
|
|
205
|
+
# * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
|
|
206
|
+
#
|
|
207
|
+
# Here, class Float provides methods for:
|
|
208
|
+
#
|
|
209
|
+
# * [Querying](rdoc-ref:Float@Querying)
|
|
210
|
+
# * [Comparing](rdoc-ref:Float@Comparing)
|
|
211
|
+
# * [Converting](rdoc-ref:Float@Converting)
|
|
212
|
+
#
|
|
213
|
+
# ### Querying
|
|
214
|
+
#
|
|
215
|
+
# * #finite?: Returns whether `self` is finite.
|
|
216
|
+
# * #hash: Returns the integer hash code for `self`.
|
|
217
|
+
# * #infinite?: Returns whether `self` is infinite.
|
|
218
|
+
# * #nan?: Returns whether `self` is a NaN (not-a-number).
|
|
219
|
+
#
|
|
220
|
+
# ### Comparing
|
|
221
|
+
#
|
|
222
|
+
# * #<: Returns whether `self` is less than the given value.
|
|
223
|
+
# * #<=: Returns whether `self` is less than or equal to the given value.
|
|
224
|
+
# * #<=>: Returns a number indicating whether `self` is less than, equal to,
|
|
225
|
+
# or greater than the given value.
|
|
226
|
+
# * #== (aliased as #=== and #eql?): Returns whether `self` is equal to the
|
|
227
|
+
# given value.
|
|
228
|
+
# * #>: Returns whether `self` is greater than the given value.
|
|
229
|
+
# * #>=: Returns whether `self` is greater than or equal to the given value.
|
|
230
|
+
#
|
|
231
|
+
# ### Converting
|
|
232
|
+
#
|
|
233
|
+
# * #% (aliased as #modulo): Returns `self` modulo the given value.
|
|
234
|
+
# * #*: Returns the product of `self` and the given value.
|
|
235
|
+
# * #**: Returns the value of `self` raised to the power of the given value.
|
|
236
|
+
# * #+: Returns the sum of `self` and the given value.
|
|
237
|
+
# * #-: Returns the difference of `self` and the given value.
|
|
238
|
+
# * #/: Returns the quotient of `self` and the given value.
|
|
239
|
+
# * #ceil: Returns the smallest number greater than or equal to `self`.
|
|
240
|
+
# * #coerce: Returns a 2-element array containing the given value converted to
|
|
241
|
+
# a Float and `self`
|
|
242
|
+
# * #divmod: Returns a 2-element array containing the quotient and remainder
|
|
243
|
+
# results of dividing `self` by the given value.
|
|
244
|
+
# * #fdiv: Returns the Float result of dividing `self` by the given value.
|
|
245
|
+
# * #floor: Returns the greatest number smaller than or equal to `self`.
|
|
246
|
+
# * #next_float: Returns the next-larger representable Float.
|
|
247
|
+
# * #prev_float: Returns the next-smaller representable Float.
|
|
248
|
+
# * #quo: Returns the quotient from dividing `self` by the given value.
|
|
249
|
+
# * #round: Returns `self` rounded to the nearest value, to a given precision.
|
|
250
|
+
# * #to_i (aliased as #to_int): Returns `self` truncated to an Integer.
|
|
251
|
+
# * #to_s (aliased as #inspect): Returns a string containing the place-value
|
|
252
|
+
# representation of `self` in the given radix.
|
|
253
|
+
# * #truncate: Returns `self` truncated to a given precision.
|
|
254
|
+
#
|
|
255
|
+
class Float < Numeric
|
|
256
|
+
# <!--
|
|
257
|
+
# rdoc-file=numeric.c
|
|
258
|
+
# - self % other -> float
|
|
259
|
+
# -->
|
|
260
|
+
# Returns `self` modulo `other` as a Float.
|
|
261
|
+
#
|
|
262
|
+
# For float `f` and real number `r`, these expressions are equivalent:
|
|
263
|
+
#
|
|
264
|
+
# f % r
|
|
265
|
+
# f-r*(f/r).floor
|
|
266
|
+
# f.divmod(r)[1]
|
|
267
|
+
#
|
|
268
|
+
# See Numeric#divmod.
|
|
269
|
+
#
|
|
270
|
+
# Examples:
|
|
271
|
+
#
|
|
272
|
+
# 10.0 % 2 # => 0.0
|
|
273
|
+
# 10.0 % 3 # => 1.0
|
|
274
|
+
# 10.0 % 4 # => 2.0
|
|
275
|
+
#
|
|
276
|
+
# 10.0 % -2 # => 0.0
|
|
277
|
+
# 10.0 % -3 # => -2.0
|
|
278
|
+
# 10.0 % -4 # => -2.0
|
|
279
|
+
#
|
|
280
|
+
# 10.0 % 4.0 # => 2.0
|
|
281
|
+
# 10.0 % Rational(4, 1) # => 2.0
|
|
282
|
+
#
|
|
283
|
+
def %: (Integer) -> Float
|
|
284
|
+
| (Float) -> Float
|
|
285
|
+
| (Rational) -> Float
|
|
286
|
+
| (Numeric) -> Numeric
|
|
287
|
+
|
|
288
|
+
# <!--
|
|
289
|
+
# rdoc-file=numeric.c
|
|
290
|
+
# - self * other -> numeric
|
|
291
|
+
# -->
|
|
292
|
+
# Returns the numeric product of `self` and `other`:
|
|
293
|
+
#
|
|
294
|
+
# f = 3.14
|
|
295
|
+
# f * 2 # => 6.28
|
|
296
|
+
# f * 2.0 # => 6.28
|
|
297
|
+
# f * Rational(1, 2) # => 1.57
|
|
298
|
+
# f * Complex(2, 0) # => (6.28+0.0i)
|
|
299
|
+
#
|
|
300
|
+
def *: (Complex) -> Complex
|
|
301
|
+
| (Numeric) -> Float
|
|
302
|
+
|
|
303
|
+
# <!--
|
|
304
|
+
# rdoc-file=numeric.c
|
|
305
|
+
# - self ** exponent -> numeric
|
|
306
|
+
# -->
|
|
307
|
+
# Returns `self` raised to the power `exponent`:
|
|
308
|
+
#
|
|
309
|
+
# f = 3.14
|
|
310
|
+
# f ** 2 # => 9.8596
|
|
311
|
+
# f ** -2 # => 0.1014239928597509
|
|
312
|
+
# f ** 2.1 # => 11.054834900588839
|
|
313
|
+
# f ** Rational(2, 1) # => 9.8596
|
|
314
|
+
# f ** Complex(2, 0) # => (9.8596+0i)
|
|
315
|
+
#
|
|
316
|
+
def **: (Complex) -> Complex
|
|
317
|
+
| (Numeric) -> Float
|
|
318
|
+
|
|
319
|
+
# <!--
|
|
320
|
+
# rdoc-file=numeric.c
|
|
321
|
+
# - self + other -> float or complex
|
|
322
|
+
# -->
|
|
323
|
+
# Returns the sum of `self` and `other`; the result may be inexact (see Float):
|
|
324
|
+
#
|
|
325
|
+
# 3.14 + 0 # => 3.14
|
|
326
|
+
# 3.14 + 1 # => 4.140000000000001
|
|
327
|
+
# -3.14 + 0 # => -3.14
|
|
328
|
+
# -3.14 + 1 # => -2.14
|
|
329
|
+
#
|
|
330
|
+
# 3.14 + -3.14 # => 0.0
|
|
331
|
+
# -3.14 + -3.14 # => -6.28
|
|
332
|
+
#
|
|
333
|
+
# 3.14 + Complex(1, 0) # => (4.140000000000001+0i)
|
|
334
|
+
# 3.14 + Rational(1, 1) # => 4.140000000000001
|
|
335
|
+
#
|
|
336
|
+
def +: (Complex) -> Complex
|
|
337
|
+
| (Numeric) -> Float
|
|
338
|
+
|
|
339
|
+
# <!--
|
|
340
|
+
# rdoc-file=numeric.c
|
|
341
|
+
# - self - other -> numeric
|
|
342
|
+
# -->
|
|
343
|
+
# Returns the difference of `self` and `other`:
|
|
344
|
+
#
|
|
345
|
+
# f = 3.14
|
|
346
|
+
# f - 1 # => 2.14
|
|
347
|
+
# f - 1.0 # => 2.14
|
|
348
|
+
# f - Rational(1, 1) # => 2.14
|
|
349
|
+
# f - Complex(1, 0) # => (2.14+0i)
|
|
350
|
+
#
|
|
351
|
+
def -: (Complex) -> Complex
|
|
352
|
+
| (Numeric) -> Float
|
|
353
|
+
|
|
354
|
+
# <!--
|
|
355
|
+
# rdoc-file=numeric.rb
|
|
356
|
+
# - -self -> float
|
|
357
|
+
# -->
|
|
358
|
+
# Returns `self`, negated:
|
|
359
|
+
#
|
|
360
|
+
# -3.14 # => -3.14
|
|
361
|
+
# -(-3.14) # => 3.14
|
|
362
|
+
# -0.0 # => -0.0
|
|
363
|
+
#
|
|
364
|
+
def -@: () -> Float
|
|
365
|
+
|
|
366
|
+
# <!--
|
|
367
|
+
# rdoc-file=numeric.c
|
|
368
|
+
# - self / other -> numeric
|
|
369
|
+
# -->
|
|
370
|
+
# Returns the quotient of `self` and `other`:
|
|
371
|
+
#
|
|
372
|
+
# f = 3.14
|
|
373
|
+
# f / 2 # => 1.57
|
|
374
|
+
# f / 2.0 # => 1.57
|
|
375
|
+
# f / Rational(2, 1) # => 1.57
|
|
376
|
+
# f / Complex(2, 0) # => (1.57+0.0i)
|
|
377
|
+
#
|
|
378
|
+
def /: (Complex) -> Complex
|
|
379
|
+
| (Numeric) -> Float
|
|
380
|
+
|
|
381
|
+
# <!--
|
|
382
|
+
# rdoc-file=numeric.c
|
|
383
|
+
# - self < other -> true or false
|
|
384
|
+
# -->
|
|
385
|
+
# Returns whether the value of `self` is less than the value of `other`; `other`
|
|
386
|
+
# must be numeric, but may not be Complex:
|
|
387
|
+
#
|
|
388
|
+
# 2.0 < 3 # => true
|
|
389
|
+
# 2.0 < 3.0 # => true
|
|
390
|
+
# 2.0 < Rational(3, 1) # => true
|
|
391
|
+
# 2.0 < 2.0 # => false
|
|
392
|
+
#
|
|
393
|
+
# <code>Float::NAN < Float::NAN</code> returns an implementation-dependent
|
|
394
|
+
# value.
|
|
395
|
+
#
|
|
396
|
+
def <: (Numeric) -> bool
|
|
397
|
+
|
|
398
|
+
# <!--
|
|
399
|
+
# rdoc-file=numeric.c
|
|
400
|
+
# - self <= other -> true or false
|
|
401
|
+
# -->
|
|
402
|
+
# Returns whether the value of `self` is less than or equal to the value of
|
|
403
|
+
# `other`; `other` must be numeric, but may not be Complex:
|
|
404
|
+
#
|
|
405
|
+
# 2.0 <= 3 # => true
|
|
406
|
+
# 2.0 <= 3.0 # => true
|
|
407
|
+
# 2.0 <= Rational(3, 1) # => true
|
|
408
|
+
# 2.0 <= 2.0 # => true
|
|
409
|
+
# 2.0 <= 1.0 # => false
|
|
410
|
+
#
|
|
411
|
+
# <code>Float::NAN <= Float::NAN</code> returns an implementation-dependent
|
|
412
|
+
# value.
|
|
413
|
+
#
|
|
414
|
+
def <=: (Numeric) -> bool
|
|
415
|
+
|
|
416
|
+
# <!--
|
|
417
|
+
# rdoc-file=numeric.c
|
|
418
|
+
# - self <=> other -> -1, 0, 1, or nil
|
|
419
|
+
# -->
|
|
420
|
+
# Compares `self` and `other`.
|
|
421
|
+
#
|
|
422
|
+
# Returns:
|
|
423
|
+
#
|
|
424
|
+
# * <code>-1</code>, if `self` is less than `other`.
|
|
425
|
+
# * `0`, if `self` is equal to `other`.
|
|
426
|
+
# * `1`, if `self` is greater than `other`.
|
|
427
|
+
# * `nil`, if the two values are incommensurate.
|
|
428
|
+
#
|
|
429
|
+
# Examples:
|
|
430
|
+
#
|
|
431
|
+
# 2.0 <=> 2.1 # => -1
|
|
432
|
+
# 2.0 <=> 2 # => 0
|
|
433
|
+
# 2.0 <=> 2.0 # => 0
|
|
434
|
+
# 2.0 <=> Rational(2, 1) # => 0
|
|
435
|
+
# 2.0 <=> Complex(2, 0) # => 0
|
|
436
|
+
# 2.0 <=> 1.9 # => 1
|
|
437
|
+
# 2.0 <=> 'foo' # => nil
|
|
438
|
+
#
|
|
439
|
+
# <code>Float::NAN <=> Float::NAN</code> returns an implementation-dependent
|
|
440
|
+
# value.
|
|
441
|
+
#
|
|
442
|
+
# Class Float includes module Comparable, each of whose methods uses Float#<=>
|
|
443
|
+
# for comparison.
|
|
444
|
+
#
|
|
445
|
+
def <=>: (Numeric) -> Integer?
|
|
446
|
+
|
|
447
|
+
# <!--
|
|
448
|
+
# rdoc-file=numeric.c
|
|
449
|
+
# - self == other -> true or false
|
|
450
|
+
# -->
|
|
451
|
+
# Returns `true` if `other` has the same value as `self`, `false` otherwise:
|
|
452
|
+
#
|
|
453
|
+
# 2.0 == 2 # => true
|
|
454
|
+
# 2.0 == 2.0 # => true
|
|
455
|
+
# 2.0 == Rational(2, 1) # => true
|
|
456
|
+
# 2.0 == Complex(2, 0) # => true
|
|
457
|
+
#
|
|
458
|
+
# <code>Float::NAN == Float::NAN</code> returns an implementation-dependent
|
|
459
|
+
# value.
|
|
460
|
+
#
|
|
461
|
+
# Related: Float#eql? (requires `other` to be a Float).
|
|
462
|
+
#
|
|
463
|
+
def ==: (untyped) -> bool
|
|
464
|
+
|
|
465
|
+
# <!-- rdoc-file=numeric.c -->
|
|
466
|
+
# Returns `true` if `other` has the same value as `self`, `false` otherwise:
|
|
467
|
+
#
|
|
468
|
+
# 2.0 == 2 # => true
|
|
469
|
+
# 2.0 == 2.0 # => true
|
|
470
|
+
# 2.0 == Rational(2, 1) # => true
|
|
471
|
+
# 2.0 == Complex(2, 0) # => true
|
|
472
|
+
#
|
|
473
|
+
# <code>Float::NAN == Float::NAN</code> returns an implementation-dependent
|
|
474
|
+
# value.
|
|
475
|
+
#
|
|
476
|
+
# Related: Float#eql? (requires `other` to be a Float).
|
|
477
|
+
#
|
|
478
|
+
def ===: (untyped) -> bool
|
|
479
|
+
|
|
480
|
+
# <!--
|
|
481
|
+
# rdoc-file=numeric.c
|
|
482
|
+
# - self > other -> true or false
|
|
483
|
+
# -->
|
|
484
|
+
# Returns `true` if `self` is numerically greater than `other`:
|
|
485
|
+
#
|
|
486
|
+
# 2.0 > 1 # => true
|
|
487
|
+
# 2.0 > 1.0 # => true
|
|
488
|
+
# 2.0 > Rational(1, 2) # => true
|
|
489
|
+
# 2.0 > 2.0 # => false
|
|
490
|
+
#
|
|
491
|
+
# <code>Float::NAN > Float::NAN</code> returns an implementation-dependent
|
|
492
|
+
# value.
|
|
493
|
+
#
|
|
494
|
+
def >: (Numeric) -> bool
|
|
495
|
+
|
|
496
|
+
# <!--
|
|
497
|
+
# rdoc-file=numeric.c
|
|
498
|
+
# - self >= other -> true or false
|
|
499
|
+
# -->
|
|
500
|
+
# Returns `true` if `self` is numerically greater than or equal to `other`:
|
|
501
|
+
#
|
|
502
|
+
# 2.0 >= 1 # => true
|
|
503
|
+
# 2.0 >= 1.0 # => true
|
|
504
|
+
# 2.0 >= Rational(1, 2) # => true
|
|
505
|
+
# 2.0 >= 2.0 # => true
|
|
506
|
+
# 2.0 >= 2.1 # => false
|
|
507
|
+
#
|
|
508
|
+
# <code>Float::NAN >= Float::NAN</code> returns an implementation-dependent
|
|
509
|
+
# value.
|
|
510
|
+
#
|
|
511
|
+
def >=: (Numeric) -> bool
|
|
512
|
+
|
|
513
|
+
# <!--
|
|
514
|
+
# rdoc-file=numeric.rb
|
|
515
|
+
# - float.abs -> float
|
|
516
|
+
# -->
|
|
517
|
+
# Returns the absolute value of `self`:
|
|
518
|
+
#
|
|
519
|
+
# (-34.56).abs # => 34.56
|
|
520
|
+
# -34.56.abs # => 34.56
|
|
521
|
+
# 34.56.abs # => 34.56
|
|
522
|
+
#
|
|
523
|
+
def abs: () -> Float
|
|
524
|
+
|
|
525
|
+
# <!-- rdoc-file=complex.c -->
|
|
526
|
+
# Returns 0 if `self` is positive, Math::PI otherwise.
|
|
527
|
+
#
|
|
528
|
+
def angle: ...
|
|
529
|
+
|
|
530
|
+
# <!--
|
|
531
|
+
# rdoc-file=complex.c
|
|
532
|
+
# - arg -> 0 or Math::PI
|
|
533
|
+
# -->
|
|
534
|
+
# Returns 0 if `self` is positive, Math::PI otherwise.
|
|
535
|
+
#
|
|
536
|
+
alias arg angle
|
|
537
|
+
|
|
538
|
+
# <!--
|
|
539
|
+
# rdoc-file=numeric.c
|
|
540
|
+
# - ceil(ndigits = 0) -> float or integer
|
|
541
|
+
# -->
|
|
542
|
+
# Returns a numeric that is a "ceiling" value for `self`,
|
|
543
|
+
# as specified by the given `ndigits`,
|
|
544
|
+
# which must be an
|
|
545
|
+
# [integer-convertible
|
|
546
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
547
|
+
# When `ndigits` is positive, returns a Float with `ndigits`
|
|
548
|
+
# decimal digits after the decimal point
|
|
549
|
+
# (as available, but no fewer than 1):
|
|
550
|
+
# f = 12345.6789
|
|
551
|
+
# f.ceil(1) # => 12345.7
|
|
552
|
+
# f.ceil(3) # => 12345.679
|
|
553
|
+
# f.ceil(30) # => 12345.6789
|
|
554
|
+
# f = -12345.6789
|
|
555
|
+
# f.ceil(1) # => -12345.6
|
|
556
|
+
# f.ceil(3) # => -12345.678
|
|
557
|
+
# f.ceil(30) # => -12345.6789
|
|
558
|
+
# f = 0.0
|
|
559
|
+
# f.ceil(1) # => 0.0
|
|
560
|
+
# f.ceil(100) # => 0.0
|
|
561
|
+
#
|
|
562
|
+
# When `ndigits` is non-positive,
|
|
563
|
+
# returns an Integer based on a computed granularity:
|
|
564
|
+
# * The granularity is <code>10 ** ndigits.abs</code>.
|
|
565
|
+
# * The returned value is the largest multiple of the granularity
|
|
566
|
+
# that is less than or equal to `self`.
|
|
567
|
+
# Examples with positive `self`:
|
|
568
|
+
# ndigits|Granularity|12345.6789.ceil(ndigits)
|
|
569
|
+
# -------|-----------|------------------------
|
|
570
|
+
# 0| 1| 12346
|
|
571
|
+
# -1| 10| 12350
|
|
572
|
+
# -2| 100| 12400
|
|
573
|
+
# -3| 1000| 13000
|
|
574
|
+
# -4| 10000| 20000
|
|
575
|
+
# -5| 100000| 100000
|
|
576
|
+
# Examples with negative `self`:
|
|
577
|
+
# ndigits|Granularity|-12345.6789.ceil(ndigits)
|
|
578
|
+
# -------|-----------|-------------------------
|
|
579
|
+
# 0| 1| -12345
|
|
580
|
+
# -1| 10| -12340
|
|
581
|
+
# -2| 100| -12300
|
|
582
|
+
# -3| 1000| -12000
|
|
583
|
+
# -4| 10000| -10000
|
|
584
|
+
# -5| 100000| 0
|
|
585
|
+
# When `self` is zero and `ndigits` is non-positive,
|
|
586
|
+
# returns Integer zero:
|
|
587
|
+
# 0.0.ceil(0) # => 0
|
|
588
|
+
# 0.0.ceil(-1) # => 0
|
|
589
|
+
# 0.0.ceil(-2) # => 0
|
|
590
|
+
#
|
|
591
|
+
# Note that the limited precision of floating-point arithmetic
|
|
592
|
+
# may lead to surprising results:
|
|
593
|
+
# (2.1 / 0.7).ceil #=> 4 # Not 3 (because 2.1 / 0.7 # => 3.0000000000000004, not 3.0)
|
|
594
|
+
#
|
|
595
|
+
# Related: Float#floor.
|
|
596
|
+
#
|
|
597
|
+
def ceil: () -> Integer
|
|
598
|
+
| (int digits) -> (Integer | Float)
|
|
599
|
+
|
|
600
|
+
# <!--
|
|
601
|
+
# rdoc-file=numeric.c
|
|
602
|
+
# - coerce(other) -> array
|
|
603
|
+
# -->
|
|
604
|
+
# Returns a 2-element array containing `other` converted to a Float and `self`:
|
|
605
|
+
#
|
|
606
|
+
# f = 3.14 # => 3.14
|
|
607
|
+
# f.coerce(2) # => [2.0, 3.14]
|
|
608
|
+
# f.coerce(2.0) # => [2.0, 3.14]
|
|
609
|
+
# f.coerce(Rational(1, 2)) # => [0.5, 3.14]
|
|
610
|
+
# f.coerce(Complex(1, 0)) # => [1.0, 3.14]
|
|
611
|
+
#
|
|
612
|
+
# Raises an exception if a type conversion fails.
|
|
613
|
+
#
|
|
614
|
+
def coerce: (Numeric) -> [ Float, Float ]
|
|
615
|
+
|
|
616
|
+
# <!--
|
|
617
|
+
# rdoc-file=rational.c
|
|
618
|
+
# - flo.denominator -> integer
|
|
619
|
+
# -->
|
|
620
|
+
# Returns the denominator (always positive). The result is machine dependent.
|
|
621
|
+
#
|
|
622
|
+
# See also Float#numerator.
|
|
623
|
+
#
|
|
624
|
+
def denominator: () -> Integer
|
|
625
|
+
|
|
626
|
+
# <!--
|
|
627
|
+
# rdoc-file=numeric.c
|
|
628
|
+
# - divmod(other) -> array
|
|
629
|
+
# -->
|
|
630
|
+
# Returns a 2-element array <code>[q, r]</code>, where
|
|
631
|
+
#
|
|
632
|
+
# q = (self/other).floor # Quotient
|
|
633
|
+
# r = self % other # Remainder
|
|
634
|
+
#
|
|
635
|
+
# Examples:
|
|
636
|
+
#
|
|
637
|
+
# 11.0.divmod(4) # => [2, 3.0]
|
|
638
|
+
# 11.0.divmod(-4) # => [-3, -1.0]
|
|
639
|
+
# -11.0.divmod(4) # => [-3, 1.0]
|
|
640
|
+
# -11.0.divmod(-4) # => [2, -3.0]
|
|
641
|
+
#
|
|
642
|
+
# 12.0.divmod(4) # => [3, 0.0]
|
|
643
|
+
# 12.0.divmod(-4) # => [-3, 0.0]
|
|
644
|
+
# -12.0.divmod(4) # => [-3, -0.0]
|
|
645
|
+
# -12.0.divmod(-4) # => [3, -0.0]
|
|
646
|
+
#
|
|
647
|
+
# 13.0.divmod(4.0) # => [3, 1.0]
|
|
648
|
+
# 13.0.divmod(Rational(4, 1)) # => [3, 1.0]
|
|
649
|
+
#
|
|
650
|
+
def divmod: (Integer | Float | Rational) -> [ Integer, Float ]
|
|
651
|
+
| (Numeric) -> [ Numeric, Numeric ]
|
|
652
|
+
|
|
653
|
+
# <!--
|
|
654
|
+
# rdoc-file=numeric.c
|
|
655
|
+
# - eql?(other) -> true or false
|
|
656
|
+
# -->
|
|
657
|
+
# Returns `true` if `other` is a Float with the same value as `self`, `false`
|
|
658
|
+
# otherwise:
|
|
659
|
+
#
|
|
660
|
+
# 2.0.eql?(2.0) # => true
|
|
661
|
+
# 2.0.eql?(1.0) # => false
|
|
662
|
+
# 2.0.eql?(1) # => false
|
|
663
|
+
# 2.0.eql?(Rational(2, 1)) # => false
|
|
664
|
+
# 2.0.eql?(Complex(2, 0)) # => false
|
|
665
|
+
#
|
|
666
|
+
# <code>Float::NAN.eql?(Float::NAN)</code> returns an implementation-dependent
|
|
667
|
+
# value.
|
|
668
|
+
#
|
|
669
|
+
# Related: Float#== (performs type conversions).
|
|
670
|
+
#
|
|
671
|
+
def eql?: (untyped) -> bool
|
|
672
|
+
|
|
673
|
+
# <!-- rdoc-file=numeric.c -->
|
|
674
|
+
# Returns the quotient from dividing `self` by `other`:
|
|
675
|
+
#
|
|
676
|
+
# f = 3.14
|
|
677
|
+
# f.quo(2) # => 1.57
|
|
678
|
+
# f.quo(-2) # => -1.57
|
|
679
|
+
# f.quo(Rational(2, 1)) # => 1.57
|
|
680
|
+
# f.quo(Complex(2, 0)) # => (1.57+0.0i)
|
|
681
|
+
#
|
|
682
|
+
def fdiv: (Complex) -> Complex
|
|
683
|
+
| (Numeric) -> Float
|
|
684
|
+
|
|
685
|
+
# <!--
|
|
686
|
+
# rdoc-file=numeric.c
|
|
687
|
+
# - finite? -> true or false
|
|
688
|
+
# -->
|
|
689
|
+
# Returns `true` if `self` is not `Infinity`, <code>-Infinity</code>, or `NaN`,
|
|
690
|
+
# `false` otherwise:
|
|
691
|
+
#
|
|
692
|
+
# f = 2.0 # => 2.0
|
|
693
|
+
# f.finite? # => true
|
|
694
|
+
# f = 1.0/0.0 # => Infinity
|
|
695
|
+
# f.finite? # => false
|
|
696
|
+
# f = -1.0/0.0 # => -Infinity
|
|
697
|
+
# f.finite? # => false
|
|
698
|
+
# f = 0.0/0.0 # => NaN
|
|
699
|
+
# f.finite? # => false
|
|
700
|
+
#
|
|
701
|
+
def finite?: () -> bool
|
|
702
|
+
|
|
703
|
+
# <!--
|
|
704
|
+
# rdoc-file=numeric.c
|
|
705
|
+
# - floor(ndigits = 0) -> float or integer
|
|
706
|
+
# -->
|
|
707
|
+
# Returns a float or integer that is a "floor" value for `self`,
|
|
708
|
+
# as specified by `ndigits`,
|
|
709
|
+
# which must be an
|
|
710
|
+
# [integer-convertible
|
|
711
|
+
# object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
|
|
712
|
+
# When `self` is zero,
|
|
713
|
+
# returns a zero value:
|
|
714
|
+
# a float if `ndigits` is positive,
|
|
715
|
+
# an integer otherwise:
|
|
716
|
+
# f = 0.0 # => 0.0
|
|
717
|
+
# f.floor(20) # => 0.0
|
|
718
|
+
# f.floor(0) # => 0
|
|
719
|
+
# f.floor(-20) # => 0
|
|
720
|
+
#
|
|
721
|
+
# When `self` is non-zero and `ndigits` is positive, returns a float with
|
|
722
|
+
# `ndigits`
|
|
723
|
+
# digits after the decimal point (as available):
|
|
724
|
+
# f = 12345.6789
|
|
725
|
+
# f.floor(1) # => 12345.6
|
|
726
|
+
# f.floor(3) # => 12345.678
|
|
727
|
+
# f.floor(30) # => 12345.6789
|
|
728
|
+
# f = -12345.6789
|
|
729
|
+
# f.floor(1) # => -12345.7
|
|
730
|
+
# f.floor(3) # => -12345.679
|
|
731
|
+
# f.floor(30) # => -12345.6789
|
|
732
|
+
#
|
|
733
|
+
# When `self` is non-zero and `ndigits` is non-positive,
|
|
734
|
+
# returns an integer value based on a computed granularity:
|
|
735
|
+
# * The granularity is <code>10 ** ndigits.abs</code>.
|
|
736
|
+
# * The returned value is the largest multiple of the granularity
|
|
737
|
+
# that is less than or equal to `self`.
|
|
738
|
+
# Examples with positive `self`:
|
|
739
|
+
# ndigits|Granularity|12345.6789.floor(ndigits)
|
|
740
|
+
# -------|-----------|-------------------------
|
|
741
|
+
# 0| 1| 12345
|
|
742
|
+
# -1| 10| 12340
|
|
743
|
+
# -2| 100| 12300
|
|
744
|
+
# -3| 1000| 12000
|
|
745
|
+
# -4| 10000| 10000
|
|
746
|
+
# -5| 100000| 0
|
|
747
|
+
# Examples with negative `self`:
|
|
748
|
+
# ndigits|Granularity|-12345.6789.floor(ndigits)
|
|
749
|
+
# -------|-----------|--------------------------
|
|
750
|
+
# 0| 1| -12346
|
|
751
|
+
# -1| 10| -12350
|
|
752
|
+
# -2| 100| -12400
|
|
753
|
+
# -3| 1000| -13000
|
|
754
|
+
# -4| 10000| -20000
|
|
755
|
+
# -5| 100000| -100000
|
|
756
|
+
# -6| 1000000| -1000000
|
|
757
|
+
# Note that the limited precision of floating-point arithmetic
|
|
758
|
+
# may lead to surprising results:
|
|
759
|
+
# (0.3 / 0.1).floor # => 2 # Not 3, (because (0.3 / 0.1) # => 2.9999999999999996, not 3.0)
|
|
760
|
+
#
|
|
761
|
+
# Related: Float#ceil.
|
|
762
|
+
#
|
|
763
|
+
def floor: () -> Integer
|
|
764
|
+
| (int digits) -> (Integer | Numeric)
|
|
765
|
+
|
|
766
|
+
# <!--
|
|
767
|
+
# rdoc-file=numeric.c
|
|
768
|
+
# - hash -> integer
|
|
769
|
+
# -->
|
|
770
|
+
# Returns the integer hash value for `self`.
|
|
771
|
+
#
|
|
772
|
+
# See also Object#hash.
|
|
773
|
+
#
|
|
774
|
+
def hash: () -> Integer
|
|
775
|
+
|
|
776
|
+
# <!--
|
|
777
|
+
# rdoc-file=numeric.c
|
|
778
|
+
# - infinite? -> -1, 1, or nil
|
|
779
|
+
# -->
|
|
780
|
+
# Returns:
|
|
781
|
+
#
|
|
782
|
+
# * 1, if `self` is `Infinity`.
|
|
783
|
+
# * -1 if `self` is <code>-Infinity</code>.
|
|
784
|
+
# * `nil`, otherwise.
|
|
785
|
+
#
|
|
786
|
+
# Examples:
|
|
787
|
+
#
|
|
788
|
+
# f = 1.0/0.0 # => Infinity
|
|
789
|
+
# f.infinite? # => 1
|
|
790
|
+
# f = -1.0/0.0 # => -Infinity
|
|
791
|
+
# f.infinite? # => -1
|
|
792
|
+
# f = 1.0 # => 1.0
|
|
793
|
+
# f.infinite? # => nil
|
|
794
|
+
# f = 0.0/0.0 # => NaN
|
|
795
|
+
# f.infinite? # => nil
|
|
796
|
+
#
|
|
797
|
+
def infinite?: () -> Integer?
|
|
798
|
+
|
|
799
|
+
# <!-- rdoc-file=numeric.c -->
|
|
800
|
+
# Returns a string containing a representation of `self`; depending of the value
|
|
801
|
+
# of `self`, the string representation may contain:
|
|
802
|
+
#
|
|
803
|
+
# * A fixed-point number.
|
|
804
|
+
# 3.14.to_s # => "3.14"
|
|
805
|
+
#
|
|
806
|
+
# * A number in "scientific notation" (containing an exponent).
|
|
807
|
+
# (10.1**50).to_s # => "1.644631821843879e+50"
|
|
808
|
+
#
|
|
809
|
+
# * 'Infinity'.
|
|
810
|
+
# (10.1**500).to_s # => "Infinity"
|
|
811
|
+
#
|
|
812
|
+
# * '-Infinity'.
|
|
813
|
+
# (-10.1**500).to_s # => "-Infinity"
|
|
814
|
+
#
|
|
815
|
+
# * 'NaN' (indicating not-a-number).
|
|
816
|
+
# (0.0/0.0).to_s # => "NaN"
|
|
817
|
+
#
|
|
818
|
+
alias inspect to_s
|
|
819
|
+
|
|
820
|
+
# <!--
|
|
821
|
+
# rdoc-file=numeric.rb
|
|
822
|
+
# - magnitude()
|
|
823
|
+
# -->
|
|
824
|
+
#
|
|
825
|
+
alias magnitude abs
|
|
826
|
+
|
|
827
|
+
# <!-- rdoc-file=numeric.c -->
|
|
828
|
+
# Returns `self` modulo `other` as a Float.
|
|
829
|
+
#
|
|
830
|
+
# For float `f` and real number `r`, these expressions are equivalent:
|
|
831
|
+
#
|
|
832
|
+
# f % r
|
|
833
|
+
# f-r*(f/r).floor
|
|
834
|
+
# f.divmod(r)[1]
|
|
835
|
+
#
|
|
836
|
+
# See Numeric#divmod.
|
|
837
|
+
#
|
|
838
|
+
# Examples:
|
|
839
|
+
#
|
|
840
|
+
# 10.0 % 2 # => 0.0
|
|
841
|
+
# 10.0 % 3 # => 1.0
|
|
842
|
+
# 10.0 % 4 # => 2.0
|
|
843
|
+
#
|
|
844
|
+
# 10.0 % -2 # => 0.0
|
|
845
|
+
# 10.0 % -3 # => -2.0
|
|
846
|
+
# 10.0 % -4 # => -2.0
|
|
847
|
+
#
|
|
848
|
+
# 10.0 % 4.0 # => 2.0
|
|
849
|
+
# 10.0 % Rational(4, 1) # => 2.0
|
|
850
|
+
#
|
|
851
|
+
def modulo: (Numeric) -> Float
|
|
852
|
+
|
|
853
|
+
# <!--
|
|
854
|
+
# rdoc-file=numeric.c
|
|
855
|
+
# - nan? -> true or false
|
|
856
|
+
# -->
|
|
857
|
+
# Returns `true` if `self` is a NaN, `false` otherwise.
|
|
858
|
+
#
|
|
859
|
+
# f = -1.0 #=> -1.0
|
|
860
|
+
# f.nan? #=> false
|
|
861
|
+
# f = 0.0/0.0 #=> NaN
|
|
862
|
+
# f.nan? #=> true
|
|
863
|
+
#
|
|
864
|
+
def nan?: () -> bool
|
|
865
|
+
|
|
866
|
+
# <!--
|
|
867
|
+
# rdoc-file=numeric.rb
|
|
868
|
+
# - negative? -> true or false
|
|
869
|
+
# -->
|
|
870
|
+
# Returns `true` if `self` is less than 0, `false` otherwise.
|
|
871
|
+
#
|
|
872
|
+
def negative?: () -> bool
|
|
873
|
+
|
|
874
|
+
# <!--
|
|
875
|
+
# rdoc-file=numeric.c
|
|
876
|
+
# - next_float -> float
|
|
877
|
+
# -->
|
|
878
|
+
# Returns the next-larger representable Float.
|
|
879
|
+
#
|
|
880
|
+
# These examples show the internally stored values (64-bit hexadecimal) for each
|
|
881
|
+
# Float `f` and for the corresponding <code>f.next_float</code>:
|
|
882
|
+
#
|
|
883
|
+
# f = 0.0 # 0x0000000000000000
|
|
884
|
+
# f.next_float # 0x0000000000000001
|
|
885
|
+
#
|
|
886
|
+
# f = 0.01 # 0x3f847ae147ae147b
|
|
887
|
+
# f.next_float # 0x3f847ae147ae147c
|
|
888
|
+
#
|
|
889
|
+
# In the remaining examples here, the output is shown in the usual way (result
|
|
890
|
+
# `to_s`):
|
|
891
|
+
#
|
|
892
|
+
# 0.01.next_float # => 0.010000000000000002
|
|
893
|
+
# 1.0.next_float # => 1.0000000000000002
|
|
894
|
+
# 100.0.next_float # => 100.00000000000001
|
|
895
|
+
#
|
|
896
|
+
# f = 0.01
|
|
897
|
+
# (0..3).each_with_index {|i| printf "%2d %-20a %s\n", i, f, f.to_s; f = f.next_float }
|
|
898
|
+
#
|
|
899
|
+
# Output:
|
|
900
|
+
#
|
|
901
|
+
# 0 0x1.47ae147ae147bp-7 0.01
|
|
902
|
+
# 1 0x1.47ae147ae147cp-7 0.010000000000000002
|
|
903
|
+
# 2 0x1.47ae147ae147dp-7 0.010000000000000004
|
|
904
|
+
# 3 0x1.47ae147ae147ep-7 0.010000000000000005
|
|
905
|
+
#
|
|
906
|
+
# f = 0.0; 100.times { f += 0.1 }
|
|
907
|
+
# f # => 9.99999999999998 # should be 10.0 in the ideal world.
|
|
908
|
+
# 10-f # => 1.9539925233402755e-14 # the floating point error.
|
|
909
|
+
# 10.0.next_float-10 # => 1.7763568394002505e-15 # 1 ulp (unit in the last place).
|
|
910
|
+
# (10-f)/(10.0.next_float-10) # => 11.0 # the error is 11 ulp.
|
|
911
|
+
# (10-f)/(10*Float::EPSILON) # => 8.8 # approximation of the above.
|
|
912
|
+
# "%a" % 10 # => "0x1.4p+3"
|
|
913
|
+
# "%a" % f # => "0x1.3fffffffffff5p+3" # the last hex digit is 5. 16 - 5 = 11 ulp.
|
|
914
|
+
#
|
|
915
|
+
# Related: Float#prev_float
|
|
916
|
+
#
|
|
917
|
+
def next_float: () -> Float
|
|
918
|
+
|
|
919
|
+
# <!--
|
|
920
|
+
# rdoc-file=rational.c
|
|
921
|
+
# - flo.numerator -> integer
|
|
922
|
+
# -->
|
|
923
|
+
# Returns the numerator. The result is machine dependent.
|
|
924
|
+
#
|
|
925
|
+
# n = 0.3.numerator #=> 5404319552844595
|
|
926
|
+
# d = 0.3.denominator #=> 18014398509481984
|
|
927
|
+
# n.fdiv(d) #=> 0.3
|
|
928
|
+
#
|
|
929
|
+
# See also Float#denominator.
|
|
930
|
+
#
|
|
931
|
+
def numerator: () -> Integer
|
|
932
|
+
|
|
933
|
+
# <!-- rdoc-file=complex.c -->
|
|
934
|
+
# Returns 0 if `self` is positive, Math::PI otherwise.
|
|
935
|
+
#
|
|
936
|
+
alias phase angle
|
|
937
|
+
|
|
938
|
+
def polar: () -> [ Float, Integer | Float ]
|
|
939
|
+
|
|
940
|
+
# <!--
|
|
941
|
+
# rdoc-file=numeric.rb
|
|
942
|
+
# - positive? -> true or false
|
|
943
|
+
# -->
|
|
944
|
+
# Returns `true` if `self` is greater than 0, `false` otherwise.
|
|
945
|
+
#
|
|
946
|
+
def positive?: () -> bool
|
|
947
|
+
|
|
948
|
+
# <!--
|
|
949
|
+
# rdoc-file=numeric.c
|
|
950
|
+
# - float.prev_float -> float
|
|
951
|
+
# -->
|
|
952
|
+
# Returns the next-smaller representable Float.
|
|
953
|
+
#
|
|
954
|
+
# These examples show the internally stored values (64-bit hexadecimal) for each
|
|
955
|
+
# Float `f` and for the corresponding <code>f.pev_float</code>:
|
|
956
|
+
#
|
|
957
|
+
# f = 5e-324 # 0x0000000000000001
|
|
958
|
+
# f.prev_float # 0x0000000000000000
|
|
959
|
+
#
|
|
960
|
+
# f = 0.01 # 0x3f847ae147ae147b
|
|
961
|
+
# f.prev_float # 0x3f847ae147ae147a
|
|
962
|
+
#
|
|
963
|
+
# In the remaining examples here, the output is shown in the usual way (result
|
|
964
|
+
# `to_s`):
|
|
965
|
+
#
|
|
966
|
+
# 0.01.prev_float # => 0.009999999999999998
|
|
967
|
+
# 1.0.prev_float # => 0.9999999999999999
|
|
968
|
+
# 100.0.prev_float # => 99.99999999999999
|
|
969
|
+
#
|
|
970
|
+
# f = 0.01
|
|
971
|
+
# (0..3).each_with_index {|i| printf "%2d %-20a %s\n", i, f, f.to_s; f = f.prev_float }
|
|
972
|
+
#
|
|
973
|
+
# Output:
|
|
974
|
+
#
|
|
975
|
+
# 0 0x1.47ae147ae147bp-7 0.01
|
|
976
|
+
# 1 0x1.47ae147ae147ap-7 0.009999999999999998
|
|
977
|
+
# 2 0x1.47ae147ae1479p-7 0.009999999999999997
|
|
978
|
+
# 3 0x1.47ae147ae1478p-7 0.009999999999999995
|
|
979
|
+
#
|
|
980
|
+
# Related: Float#next_float.
|
|
981
|
+
#
|
|
982
|
+
def prev_float: () -> Float
|
|
983
|
+
|
|
984
|
+
# <!--
|
|
985
|
+
# rdoc-file=numeric.c
|
|
986
|
+
# - quo(other) -> numeric
|
|
987
|
+
# -->
|
|
988
|
+
# Returns the quotient from dividing `self` by `other`:
|
|
989
|
+
#
|
|
990
|
+
# f = 3.14
|
|
991
|
+
# f.quo(2) # => 1.57
|
|
992
|
+
# f.quo(-2) # => -1.57
|
|
993
|
+
# f.quo(Rational(2, 1)) # => 1.57
|
|
994
|
+
# f.quo(Complex(2, 0)) # => (1.57+0.0i)
|
|
995
|
+
#
|
|
996
|
+
def quo: (Complex) -> Complex
|
|
997
|
+
| (Numeric) -> Float
|
|
998
|
+
|
|
999
|
+
# <!--
|
|
1000
|
+
# rdoc-file=rational.c
|
|
1001
|
+
# - flt.rationalize([eps]) -> rational
|
|
1002
|
+
# -->
|
|
1003
|
+
# Returns a simpler approximation of the value (flt-|eps| <= result <=
|
|
1004
|
+
# flt+|eps|). If the optional argument `eps` is not given, it will be chosen
|
|
1005
|
+
# automatically.
|
|
1006
|
+
#
|
|
1007
|
+
# 0.3.rationalize #=> (3/10)
|
|
1008
|
+
# 1.333.rationalize #=> (1333/1000)
|
|
1009
|
+
# 1.333.rationalize(0.01) #=> (4/3)
|
|
1010
|
+
#
|
|
1011
|
+
# See also Float#to_r.
|
|
1012
|
+
#
|
|
1013
|
+
def rationalize: (?Numeric eps) -> Rational
|
|
1014
|
+
|
|
1015
|
+
def rect: () -> [ Float, Numeric ]
|
|
1016
|
+
|
|
1017
|
+
def remainder: (Numeric) -> Float
|
|
1018
|
+
|
|
1019
|
+
# <!--
|
|
1020
|
+
# rdoc-file=numeric.c
|
|
1021
|
+
# - round(ndigits = 0, half: :up) -> integer or float
|
|
1022
|
+
# -->
|
|
1023
|
+
# Returns `self` rounded to the nearest value with a precision of `ndigits`
|
|
1024
|
+
# decimal digits.
|
|
1025
|
+
#
|
|
1026
|
+
# When `ndigits` is non-negative, returns a float with `ndigits` after the
|
|
1027
|
+
# decimal point (as available):
|
|
1028
|
+
#
|
|
1029
|
+
# f = 12345.6789
|
|
1030
|
+
# f.round(1) # => 12345.7
|
|
1031
|
+
# f.round(3) # => 12345.679
|
|
1032
|
+
# f = -12345.6789
|
|
1033
|
+
# f.round(1) # => -12345.7
|
|
1034
|
+
# f.round(3) # => -12345.679
|
|
1035
|
+
#
|
|
1036
|
+
# When `ndigits` is negative, returns an integer with at least
|
|
1037
|
+
# <code>ndigits.abs</code> trailing zeros:
|
|
1038
|
+
#
|
|
1039
|
+
# f = 12345.6789
|
|
1040
|
+
# f.round(0) # => 12346
|
|
1041
|
+
# f.round(-3) # => 12000
|
|
1042
|
+
# f = -12345.6789
|
|
1043
|
+
# f.round(0) # => -12346
|
|
1044
|
+
# f.round(-3) # => -12000
|
|
1045
|
+
#
|
|
1046
|
+
# If keyword argument `half` is given, and `self` is equidistant from the two
|
|
1047
|
+
# candidate values, the rounding is according to the given `half` value:
|
|
1048
|
+
#
|
|
1049
|
+
# * <code>:up</code> or `nil`: round away from zero:
|
|
1050
|
+
#
|
|
1051
|
+
# 2.5.round(half: :up) # => 3
|
|
1052
|
+
# 3.5.round(half: :up) # => 4
|
|
1053
|
+
# (-2.5).round(half: :up) # => -3
|
|
1054
|
+
#
|
|
1055
|
+
# * <code>:down</code>: round toward zero:
|
|
1056
|
+
#
|
|
1057
|
+
# 2.5.round(half: :down) # => 2
|
|
1058
|
+
# 3.5.round(half: :down) # => 3
|
|
1059
|
+
# (-2.5).round(half: :down) # => -2
|
|
1060
|
+
#
|
|
1061
|
+
# * <code>:even</code>: round toward the candidate whose last nonzero digit is
|
|
1062
|
+
# even:
|
|
1063
|
+
#
|
|
1064
|
+
# 2.5.round(half: :even) # => 2
|
|
1065
|
+
# 3.5.round(half: :even) # => 4
|
|
1066
|
+
# (-2.5).round(half: :even) # => -2
|
|
1067
|
+
#
|
|
1068
|
+
# Raises and exception if the value for `half` is invalid.
|
|
1069
|
+
#
|
|
1070
|
+
# Related: Float#truncate.
|
|
1071
|
+
#
|
|
1072
|
+
def round: (?half: :up | :down | :even) -> Integer
|
|
1073
|
+
| (int digits, ?half: :up | :down | :even) -> (Integer | Float)
|
|
1074
|
+
|
|
1075
|
+
# <!--
|
|
1076
|
+
# rdoc-file=numeric.rb
|
|
1077
|
+
# - to_f -> self
|
|
1078
|
+
# -->
|
|
1079
|
+
# Returns `self` (which is already a Float).
|
|
1080
|
+
#
|
|
1081
|
+
def to_f: () -> Float
|
|
1082
|
+
|
|
1083
|
+
# <!--
|
|
1084
|
+
# rdoc-file=numeric.c
|
|
1085
|
+
# - to_i -> integer
|
|
1086
|
+
# -->
|
|
1087
|
+
# Returns `self` truncated to an Integer.
|
|
1088
|
+
#
|
|
1089
|
+
# 1.2.to_i # => 1
|
|
1090
|
+
# (-1.2).to_i # => -1
|
|
1091
|
+
#
|
|
1092
|
+
# Note that the limited precision of floating-point arithmetic may lead to
|
|
1093
|
+
# surprising results:
|
|
1094
|
+
#
|
|
1095
|
+
# (0.3 / 0.1).to_i # => 2 (!)
|
|
1096
|
+
#
|
|
1097
|
+
def to_i: () -> Integer
|
|
1098
|
+
|
|
1099
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1100
|
+
# Returns `self` truncated to an Integer.
|
|
1101
|
+
#
|
|
1102
|
+
# 1.2.to_i # => 1
|
|
1103
|
+
# (-1.2).to_i # => -1
|
|
1104
|
+
#
|
|
1105
|
+
# Note that the limited precision of floating-point arithmetic may lead to
|
|
1106
|
+
# surprising results:
|
|
1107
|
+
#
|
|
1108
|
+
# (0.3 / 0.1).to_i # => 2 (!)
|
|
1109
|
+
#
|
|
1110
|
+
alias to_int to_i
|
|
1111
|
+
|
|
1112
|
+
# <!--
|
|
1113
|
+
# rdoc-file=rational.c
|
|
1114
|
+
# - flt.to_r -> rational
|
|
1115
|
+
# -->
|
|
1116
|
+
# Returns the value as a rational.
|
|
1117
|
+
#
|
|
1118
|
+
# 2.0.to_r #=> (2/1)
|
|
1119
|
+
# 2.5.to_r #=> (5/2)
|
|
1120
|
+
# -0.75.to_r #=> (-3/4)
|
|
1121
|
+
# 0.0.to_r #=> (0/1)
|
|
1122
|
+
# 0.3.to_r #=> (5404319552844595/18014398509481984)
|
|
1123
|
+
#
|
|
1124
|
+
# NOTE: 0.3.to_r isn't the same as "0.3".to_r. The latter is equivalent to
|
|
1125
|
+
# "3/10".to_r, but the former isn't so.
|
|
1126
|
+
#
|
|
1127
|
+
# 0.3.to_r == 3/10r #=> false
|
|
1128
|
+
# "0.3".to_r == 3/10r #=> true
|
|
1129
|
+
#
|
|
1130
|
+
# See also Float#rationalize.
|
|
1131
|
+
#
|
|
1132
|
+
def to_r: () -> Rational
|
|
1133
|
+
|
|
1134
|
+
# <!--
|
|
1135
|
+
# rdoc-file=numeric.c
|
|
1136
|
+
# - to_s -> string
|
|
1137
|
+
# -->
|
|
1138
|
+
# Returns a string containing a representation of `self`; depending of the value
|
|
1139
|
+
# of `self`, the string representation may contain:
|
|
1140
|
+
#
|
|
1141
|
+
# * A fixed-point number.
|
|
1142
|
+
# 3.14.to_s # => "3.14"
|
|
1143
|
+
#
|
|
1144
|
+
# * A number in "scientific notation" (containing an exponent).
|
|
1145
|
+
# (10.1**50).to_s # => "1.644631821843879e+50"
|
|
1146
|
+
#
|
|
1147
|
+
# * 'Infinity'.
|
|
1148
|
+
# (10.1**500).to_s # => "Infinity"
|
|
1149
|
+
#
|
|
1150
|
+
# * '-Infinity'.
|
|
1151
|
+
# (-10.1**500).to_s # => "-Infinity"
|
|
1152
|
+
#
|
|
1153
|
+
# * 'NaN' (indicating not-a-number).
|
|
1154
|
+
# (0.0/0.0).to_s # => "NaN"
|
|
1155
|
+
#
|
|
1156
|
+
def to_s: () -> String
|
|
1157
|
+
|
|
1158
|
+
# <!--
|
|
1159
|
+
# rdoc-file=numeric.c
|
|
1160
|
+
# - truncate(ndigits = 0) -> float or integer
|
|
1161
|
+
# -->
|
|
1162
|
+
# Returns `self` truncated (toward zero) to a precision of `ndigits` decimal
|
|
1163
|
+
# digits.
|
|
1164
|
+
#
|
|
1165
|
+
# When `ndigits` is positive, returns a float with `ndigits` digits after the
|
|
1166
|
+
# decimal point (as available):
|
|
1167
|
+
#
|
|
1168
|
+
# f = 12345.6789
|
|
1169
|
+
# f.truncate(1) # => 12345.6
|
|
1170
|
+
# f.truncate(3) # => 12345.678
|
|
1171
|
+
# f = -12345.6789
|
|
1172
|
+
# f.truncate(1) # => -12345.6
|
|
1173
|
+
# f.truncate(3) # => -12345.678
|
|
1174
|
+
#
|
|
1175
|
+
# When `ndigits` is negative, returns an integer with at least
|
|
1176
|
+
# <code>ndigits.abs</code> trailing zeros:
|
|
1177
|
+
#
|
|
1178
|
+
# f = 12345.6789
|
|
1179
|
+
# f.truncate(0) # => 12345
|
|
1180
|
+
# f.truncate(-3) # => 12000
|
|
1181
|
+
# f = -12345.6789
|
|
1182
|
+
# f.truncate(0) # => -12345
|
|
1183
|
+
# f.truncate(-3) # => -12000
|
|
1184
|
+
#
|
|
1185
|
+
# Note that the limited precision of floating-point arithmetic may lead to
|
|
1186
|
+
# surprising results:
|
|
1187
|
+
#
|
|
1188
|
+
# (0.3 / 0.1).truncate #=> 2 (!)
|
|
1189
|
+
#
|
|
1190
|
+
# Related: Float#round.
|
|
1191
|
+
#
|
|
1192
|
+
def truncate: () -> Integer
|
|
1193
|
+
| (Integer ndigits) -> (Integer | Float)
|
|
1194
|
+
|
|
1195
|
+
# <!--
|
|
1196
|
+
# rdoc-file=numeric.rb
|
|
1197
|
+
# - zero? -> true or false
|
|
1198
|
+
# -->
|
|
1199
|
+
# Returns `true` if `self` is 0.0, `false` otherwise.
|
|
1200
|
+
#
|
|
1201
|
+
def zero?: () -> bool
|
|
1202
|
+
end
|
|
1203
|
+
|
|
1204
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1205
|
+
# The minimum number of significant decimal digits in a double-precision
|
|
1206
|
+
# floating point.
|
|
1207
|
+
#
|
|
1208
|
+
# Usually defaults to 15.
|
|
1209
|
+
#
|
|
1210
|
+
Float::DIG: Integer
|
|
1211
|
+
|
|
1212
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1213
|
+
# The difference between 1 and the smallest double-precision floating point
|
|
1214
|
+
# number greater than 1.
|
|
1215
|
+
#
|
|
1216
|
+
# Usually defaults to 2.2204460492503131e-16.
|
|
1217
|
+
#
|
|
1218
|
+
Float::EPSILON: Float
|
|
1219
|
+
|
|
1220
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1221
|
+
# An expression representing positive infinity.
|
|
1222
|
+
#
|
|
1223
|
+
Float::INFINITY: Float
|
|
1224
|
+
|
|
1225
|
+
Float::Infinity: Float
|
|
1226
|
+
|
|
1227
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1228
|
+
# The number of base digits for the `double` data type.
|
|
1229
|
+
#
|
|
1230
|
+
# Usually defaults to 53.
|
|
1231
|
+
#
|
|
1232
|
+
Float::MANT_DIG: Integer
|
|
1233
|
+
|
|
1234
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1235
|
+
# The largest possible integer in a double-precision floating point number.
|
|
1236
|
+
#
|
|
1237
|
+
# Usually defaults to 1.7976931348623157e+308.
|
|
1238
|
+
#
|
|
1239
|
+
Float::MAX: Float
|
|
1240
|
+
|
|
1241
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1242
|
+
# The largest positive exponent in a double-precision floating point where 10
|
|
1243
|
+
# raised to this power minus 1.
|
|
1244
|
+
#
|
|
1245
|
+
# Usually defaults to 308.
|
|
1246
|
+
#
|
|
1247
|
+
Float::MAX_10_EXP: Integer
|
|
1248
|
+
|
|
1249
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1250
|
+
# The largest possible exponent value in a double-precision floating point.
|
|
1251
|
+
#
|
|
1252
|
+
# Usually defaults to 1024.
|
|
1253
|
+
#
|
|
1254
|
+
Float::MAX_EXP: Integer
|
|
1255
|
+
|
|
1256
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1257
|
+
# The smallest positive normalized number in a double-precision floating point.
|
|
1258
|
+
#
|
|
1259
|
+
# Usually defaults to 2.2250738585072014e-308.
|
|
1260
|
+
#
|
|
1261
|
+
# If the platform supports denormalized numbers, there are numbers between zero
|
|
1262
|
+
# and Float::MIN. <code>0.0.next_float</code> returns the smallest positive
|
|
1263
|
+
# floating point number including denormalized numbers.
|
|
1264
|
+
#
|
|
1265
|
+
Float::MIN: Float
|
|
1266
|
+
|
|
1267
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1268
|
+
# The smallest negative exponent in a double-precision floating point where 10
|
|
1269
|
+
# raised to this power minus 1.
|
|
1270
|
+
#
|
|
1271
|
+
# Usually defaults to -307.
|
|
1272
|
+
#
|
|
1273
|
+
Float::MIN_10_EXP: Integer
|
|
1274
|
+
|
|
1275
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1276
|
+
# The smallest possible exponent value in a double-precision floating point.
|
|
1277
|
+
#
|
|
1278
|
+
# Usually defaults to -1021.
|
|
1279
|
+
#
|
|
1280
|
+
Float::MIN_EXP: Integer
|
|
1281
|
+
|
|
1282
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1283
|
+
# An expression representing a value which is "not a number".
|
|
1284
|
+
#
|
|
1285
|
+
Float::NAN: Float
|
|
1286
|
+
|
|
1287
|
+
# <!-- rdoc-file=numeric.c -->
|
|
1288
|
+
# The base of the floating point, or number of unique digits used to represent
|
|
1289
|
+
# the number.
|
|
1290
|
+
#
|
|
1291
|
+
# Usually defaults to 2 on most systems, which would represent a base-10
|
|
1292
|
+
# decimal.
|
|
1293
|
+
#
|
|
1294
|
+
Float::RADIX: Integer
|
|
1295
|
+
|
|
1296
|
+
# Deprecated, do not use.
|
|
1297
|
+
#
|
|
1298
|
+
# Represents the rounding mode for floating point addition at the start time.
|
|
1299
|
+
#
|
|
1300
|
+
# Usually defaults to 1, rounding to the nearest number.
|
|
1301
|
+
#
|
|
1302
|
+
# Other modes include:
|
|
1303
|
+
#
|
|
1304
|
+
# -1
|
|
1305
|
+
# : Indeterminable
|
|
1306
|
+
# 0
|
|
1307
|
+
# : Rounding towards zero
|
|
1308
|
+
# 1
|
|
1309
|
+
# : Rounding to the nearest number
|
|
1310
|
+
# 2
|
|
1311
|
+
# : Rounding towards positive infinity
|
|
1312
|
+
# 3
|
|
1313
|
+
# : Rounding towards negative infinity
|
|
1314
|
+
#
|
|
1315
|
+
#
|
|
1316
|
+
Float::ROUNDS: Integer
|