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.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. 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