steep 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/CHANGELOG.md +6 -0
  4. data/Rakefile +0 -13
  5. data/bin/setup +0 -2
  6. data/bin/smoke_runner.rb +0 -1
  7. data/exe/steep +0 -1
  8. data/lib/steep/project/file.rb +1 -1
  9. data/lib/steep/project/hover_content.rb +1 -1
  10. data/lib/steep/server/code_worker.rb +1 -1
  11. data/lib/steep/server/signature_worker.rb +4 -4
  12. data/lib/steep/type_construction.rb +10 -16
  13. data/lib/steep/type_inference/constant_env.rb +2 -10
  14. data/lib/steep/type_inference/context.rb +1 -0
  15. data/lib/steep/version.rb +1 -1
  16. data/steep.gemspec +1 -5
  17. metadata +17 -135
  18. data/exe/rbs +0 -3
  19. data/vendor/ruby-signature/.github/workflows/ruby.yml +0 -27
  20. data/vendor/ruby-signature/.gitignore +0 -12
  21. data/vendor/ruby-signature/.rubocop.yml +0 -15
  22. data/vendor/ruby-signature/BSDL +0 -22
  23. data/vendor/ruby-signature/COPYING +0 -56
  24. data/vendor/ruby-signature/Gemfile +0 -6
  25. data/vendor/ruby-signature/README.md +0 -93
  26. data/vendor/ruby-signature/Rakefile +0 -142
  27. data/vendor/ruby-signature/bin/annotate-with-rdoc +0 -157
  28. data/vendor/ruby-signature/bin/console +0 -14
  29. data/vendor/ruby-signature/bin/query-rdoc +0 -103
  30. data/vendor/ruby-signature/bin/setup +0 -10
  31. data/vendor/ruby-signature/bin/sort +0 -89
  32. data/vendor/ruby-signature/bin/test_runner.rb +0 -16
  33. data/vendor/ruby-signature/docs/CONTRIBUTING.md +0 -97
  34. data/vendor/ruby-signature/docs/sigs.md +0 -148
  35. data/vendor/ruby-signature/docs/stdlib.md +0 -152
  36. data/vendor/ruby-signature/docs/syntax.md +0 -528
  37. data/vendor/ruby-signature/exe/rbs +0 -7
  38. data/vendor/ruby-signature/lib/rbs.rb +0 -64
  39. data/vendor/ruby-signature/lib/rbs/ast/annotation.rb +0 -27
  40. data/vendor/ruby-signature/lib/rbs/ast/comment.rb +0 -27
  41. data/vendor/ruby-signature/lib/rbs/ast/declarations.rb +0 -395
  42. data/vendor/ruby-signature/lib/rbs/ast/members.rb +0 -362
  43. data/vendor/ruby-signature/lib/rbs/buffer.rb +0 -50
  44. data/vendor/ruby-signature/lib/rbs/builtin_names.rb +0 -55
  45. data/vendor/ruby-signature/lib/rbs/cli.rb +0 -558
  46. data/vendor/ruby-signature/lib/rbs/constant.rb +0 -26
  47. data/vendor/ruby-signature/lib/rbs/constant_table.rb +0 -150
  48. data/vendor/ruby-signature/lib/rbs/definition.rb +0 -170
  49. data/vendor/ruby-signature/lib/rbs/definition_builder.rb +0 -919
  50. data/vendor/ruby-signature/lib/rbs/environment.rb +0 -281
  51. data/vendor/ruby-signature/lib/rbs/environment_loader.rb +0 -136
  52. data/vendor/ruby-signature/lib/rbs/environment_walker.rb +0 -124
  53. data/vendor/ruby-signature/lib/rbs/errors.rb +0 -187
  54. data/vendor/ruby-signature/lib/rbs/location.rb +0 -102
  55. data/vendor/ruby-signature/lib/rbs/method_type.rb +0 -123
  56. data/vendor/ruby-signature/lib/rbs/namespace.rb +0 -91
  57. data/vendor/ruby-signature/lib/rbs/parser.y +0 -1344
  58. data/vendor/ruby-signature/lib/rbs/prototype/rb.rb +0 -553
  59. data/vendor/ruby-signature/lib/rbs/prototype/rbi.rb +0 -587
  60. data/vendor/ruby-signature/lib/rbs/prototype/runtime.rb +0 -381
  61. data/vendor/ruby-signature/lib/rbs/substitution.rb +0 -46
  62. data/vendor/ruby-signature/lib/rbs/test.rb +0 -26
  63. data/vendor/ruby-signature/lib/rbs/test/errors.rb +0 -61
  64. data/vendor/ruby-signature/lib/rbs/test/hook.rb +0 -294
  65. data/vendor/ruby-signature/lib/rbs/test/setup.rb +0 -58
  66. data/vendor/ruby-signature/lib/rbs/test/spy.rb +0 -325
  67. data/vendor/ruby-signature/lib/rbs/test/test_helper.rb +0 -183
  68. data/vendor/ruby-signature/lib/rbs/test/type_check.rb +0 -254
  69. data/vendor/ruby-signature/lib/rbs/type_name.rb +0 -70
  70. data/vendor/ruby-signature/lib/rbs/types.rb +0 -936
  71. data/vendor/ruby-signature/lib/rbs/variance_calculator.rb +0 -138
  72. data/vendor/ruby-signature/lib/rbs/vendorer.rb +0 -47
  73. data/vendor/ruby-signature/lib/rbs/version.rb +0 -3
  74. data/vendor/ruby-signature/lib/rbs/writer.rb +0 -269
  75. data/vendor/ruby-signature/lib/ruby/signature.rb +0 -7
  76. data/vendor/ruby-signature/rbs.gemspec +0 -46
  77. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +0 -60
  78. data/vendor/ruby-signature/stdlib/base64/base64.rbs +0 -71
  79. data/vendor/ruby-signature/stdlib/benchmark/benchmark.rbs +0 -372
  80. data/vendor/ruby-signature/stdlib/builtin/array.rbs +0 -1997
  81. data/vendor/ruby-signature/stdlib/builtin/basic_object.rbs +0 -280
  82. data/vendor/ruby-signature/stdlib/builtin/binding.rbs +0 -177
  83. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +0 -45
  84. data/vendor/ruby-signature/stdlib/builtin/class.rbs +0 -145
  85. data/vendor/ruby-signature/stdlib/builtin/comparable.rbs +0 -116
  86. data/vendor/ruby-signature/stdlib/builtin/complex.rbs +0 -400
  87. data/vendor/ruby-signature/stdlib/builtin/constants.rbs +0 -37
  88. data/vendor/ruby-signature/stdlib/builtin/data.rbs +0 -5
  89. data/vendor/ruby-signature/stdlib/builtin/deprecated.rbs +0 -2
  90. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +0 -413
  91. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +0 -607
  92. data/vendor/ruby-signature/stdlib/builtin/enumerable.rbs +0 -404
  93. data/vendor/ruby-signature/stdlib/builtin/enumerator.rbs +0 -260
  94. data/vendor/ruby-signature/stdlib/builtin/errno.rbs +0 -781
  95. data/vendor/ruby-signature/stdlib/builtin/errors.rbs +0 -582
  96. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +0 -194
  97. data/vendor/ruby-signature/stdlib/builtin/false_class.rbs +0 -40
  98. data/vendor/ruby-signature/stdlib/builtin/fiber.rbs +0 -68
  99. data/vendor/ruby-signature/stdlib/builtin/fiber_error.rbs +0 -12
  100. data/vendor/ruby-signature/stdlib/builtin/file.rbs +0 -1076
  101. data/vendor/ruby-signature/stdlib/builtin/file_test.rbs +0 -59
  102. data/vendor/ruby-signature/stdlib/builtin/float.rbs +0 -696
  103. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +0 -243
  104. data/vendor/ruby-signature/stdlib/builtin/hash.rbs +0 -1029
  105. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +0 -707
  106. data/vendor/ruby-signature/stdlib/builtin/io.rbs +0 -683
  107. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +0 -576
  108. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +0 -161
  109. data/vendor/ruby-signature/stdlib/builtin/match_data.rbs +0 -271
  110. data/vendor/ruby-signature/stdlib/builtin/math.rbs +0 -369
  111. data/vendor/ruby-signature/stdlib/builtin/method.rbs +0 -185
  112. data/vendor/ruby-signature/stdlib/builtin/module.rbs +0 -1104
  113. data/vendor/ruby-signature/stdlib/builtin/nil_class.rbs +0 -82
  114. data/vendor/ruby-signature/stdlib/builtin/numeric.rbs +0 -409
  115. data/vendor/ruby-signature/stdlib/builtin/object.rbs +0 -824
  116. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +0 -429
  117. data/vendor/ruby-signature/stdlib/builtin/process.rbs +0 -1227
  118. data/vendor/ruby-signature/stdlib/builtin/random.rbs +0 -267
  119. data/vendor/ruby-signature/stdlib/builtin/range.rbs +0 -226
  120. data/vendor/ruby-signature/stdlib/builtin/rational.rbs +0 -424
  121. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +0 -57
  122. data/vendor/ruby-signature/stdlib/builtin/regexp.rbs +0 -1083
  123. data/vendor/ruby-signature/stdlib/builtin/ruby_vm.rbs +0 -14
  124. data/vendor/ruby-signature/stdlib/builtin/signal.rbs +0 -55
  125. data/vendor/ruby-signature/stdlib/builtin/string.rbs +0 -1901
  126. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +0 -284
  127. data/vendor/ruby-signature/stdlib/builtin/struct.rbs +0 -40
  128. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +0 -228
  129. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +0 -1108
  130. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +0 -23
  131. data/vendor/ruby-signature/stdlib/builtin/time.rbs +0 -1047
  132. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +0 -290
  133. data/vendor/ruby-signature/stdlib/builtin/true_class.rbs +0 -46
  134. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +0 -153
  135. data/vendor/ruby-signature/stdlib/builtin/warning.rbs +0 -17
  136. data/vendor/ruby-signature/stdlib/coverage/coverage.rbs +0 -62
  137. data/vendor/ruby-signature/stdlib/csv/csv.rbs +0 -773
  138. data/vendor/ruby-signature/stdlib/erb/erb.rbs +0 -392
  139. data/vendor/ruby-signature/stdlib/find/find.rbs +0 -40
  140. data/vendor/ruby-signature/stdlib/ipaddr/ipaddr.rbs +0 -247
  141. data/vendor/ruby-signature/stdlib/json/json.rbs +0 -335
  142. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +0 -1093
  143. data/vendor/ruby-signature/stdlib/prime/integer-extension.rbs +0 -23
  144. data/vendor/ruby-signature/stdlib/prime/prime.rbs +0 -188
  145. data/vendor/ruby-signature/stdlib/securerandom/securerandom.rbs +0 -9
  146. data/vendor/ruby-signature/stdlib/set/set.rbs +0 -301
  147. data/vendor/ruby-signature/stdlib/tmpdir/tmpdir.rbs +0 -53
@@ -1,59 +0,0 @@
1
- # `FileTest` implements file test operations similar to those used in
2
- # `File::Stat` . It exists as a standalone module, and its methods are
3
- # also insinuated into the `File` class. (Note that this is not done by
4
- # inclusion: the interpreter cheats).
5
- module FileTest
6
- def self.blockdev?: (String | IO file_name) -> bool
7
-
8
- def self.chardev?: (String | IO file_name) -> bool
9
-
10
- def self.directory?: (String | IO file_name) -> bool
11
-
12
- def self.empty?: (String | IO file_name) -> bool
13
-
14
- def self.executable?: (String | IO file_name) -> bool
15
-
16
- def self.executable_real?: (String | IO file_name) -> bool
17
-
18
- def self.exist?: (String | IO file_name) -> bool
19
-
20
- def self.exists?: (String | IO file_name) -> bool
21
-
22
- def self.file?: (String | IO file) -> bool
23
-
24
- def self.grpowned?: (String | IO file_name) -> bool
25
-
26
- def self.identical?: (String | IO file_1, String | IO file_2) -> bool
27
-
28
- def self.owned?: (String | IO file_name) -> bool
29
-
30
- def self.pipe?: (String | IO file_name) -> bool
31
-
32
- def self.readable?: (String | IO file_name) -> bool
33
-
34
- def self.readable_real?: (String | IO file_name) -> bool
35
-
36
- def self.setgid?: (String | IO file_name) -> bool
37
-
38
- def self.setuid?: (String | IO file_name) -> bool
39
-
40
- def self.size: (String | IO file_name) -> Integer
41
-
42
- def self.size?: (String | IO file_name) -> Integer?
43
-
44
- def self.socket?: (String | IO file_name) -> bool
45
-
46
- def self.sticky?: (String | IO file_name) -> bool
47
-
48
- def self.symlink?: (String | IO file_name) -> bool
49
-
50
- def self.world_readable?: (String | IO file_name) -> Integer?
51
-
52
- def self.world_writable?: (String | IO file_name) -> Integer?
53
-
54
- def self.writable?: (String | IO file_name) -> bool
55
-
56
- def self.writable_real?: (String | IO file_name) -> bool
57
-
58
- def self.zero?: (String | IO file_name) -> bool
59
- end
@@ -1,696 +0,0 @@
1
- # Float objects represent inexact real numbers using the native architecture's
2
- # double-precision floating point representation.
3
- #
4
- # Floating point has a different arithmetic and is an inexact number. So you
5
- # should know its esoteric system. See following:
6
- #
7
- # * http://docs.sun.com/source/806-3568/ncg_goldberg.html
8
- # * https://github.com/rdp/ruby_tutorials_core/wiki/Ruby-Talk-FAQ#floats_impre
9
- # cise
10
- # * http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
11
- #
12
- #
13
- class Float < Numeric
14
- public
15
-
16
- # Returns the modulo after division of `float` by `other`.
17
- #
18
- # 6543.21.modulo(137) #=> 104.21000000000004
19
- # 6543.21.modulo(137.24) #=> 92.92999999999961
20
- #
21
- def %: (Integer) -> Float
22
- | (Float) -> Float
23
- | (Rational) -> Float
24
- | (Numeric) -> Numeric
25
-
26
- # Returns a new Float which is the product of `float` and `other`.
27
- #
28
- def *: (Complex) -> Complex
29
- | (Numeric) -> Float
30
-
31
- # Raises `float` to the power of `other`.
32
- #
33
- # 2.0**3 #=> 8.0
34
- #
35
- def **: (Complex) -> Complex
36
- | (Numeric) -> Float
37
-
38
- # Returns a new Float which is the sum of `float` and `other`.
39
- #
40
- def +: (Complex) -> Complex
41
- | (Numeric) -> Float
42
-
43
- def +@: () -> Float
44
-
45
- # Returns a new Float which is the difference of `float` and `other`.
46
- #
47
- def -: (Complex) -> Complex
48
- | (Numeric) -> Float
49
-
50
- # Returns `float`, negated.
51
- #
52
- def -@: () -> Float
53
-
54
- # Returns a new Float which is the result of dividing `float` by `other`.
55
- #
56
- def /: (Complex) -> Complex
57
- | (Numeric) -> Float
58
-
59
- # Returns `true` if `float` is less than `real`.
60
- #
61
- # The result of `NaN < NaN` is undefined, so an implementation-dependent value
62
- # is returned.
63
- #
64
- def <: (Numeric) -> bool
65
-
66
- # Returns `true` if `float` is less than or equal to `real`.
67
- #
68
- # The result of `NaN <= NaN` is undefined, so an implementation-dependent value
69
- # is returned.
70
- #
71
- def <=: (Numeric) -> bool
72
-
73
- # Returns -1, 0, or +1 depending on whether `float` is less than, equal to, or
74
- # greater than `real`. This is the basis for the tests in the Comparable module.
75
- #
76
- # The result of `NaN <=> NaN` is undefined, so an implementation-dependent value
77
- # is returned.
78
- #
79
- # `nil` is returned if the two values are incomparable.
80
- #
81
- def <=>: (Numeric) -> Integer?
82
-
83
- # Returns `true` only if `obj` has the same value as `float`. Contrast this with
84
- # Float#eql?, which requires `obj` to be a Float.
85
- #
86
- # 1.0 == 1 #=> true
87
- #
88
- # The result of `NaN == NaN` is undefined, so an implementation-dependent value
89
- # is returned.
90
- #
91
- def ==: (untyped) -> bool
92
-
93
- # Returns `true` only if `obj` has the same value as `float`. Contrast this with
94
- # Float#eql?, which requires `obj` to be a Float.
95
- #
96
- # 1.0 == 1 #=> true
97
- #
98
- # The result of `NaN == NaN` is undefined, so an implementation-dependent value
99
- # is returned.
100
- #
101
- def ===: (untyped) -> bool
102
-
103
- # Returns `true` if `float` is greater than `real`.
104
- #
105
- # The result of `NaN > NaN` is undefined, so an implementation-dependent value
106
- # is returned.
107
- #
108
- def >: (Numeric) -> bool
109
-
110
- # Returns `true` if `float` is greater than or equal to `real`.
111
- #
112
- # The result of `NaN >= NaN` is undefined, so an implementation-dependent value
113
- # is returned.
114
- #
115
- def >=: (Numeric) -> bool
116
-
117
- # Returns the absolute value of `float`.
118
- #
119
- # (-34.56).abs #=> 34.56
120
- # -34.56.abs #=> 34.56
121
- # 34.56.abs #=> 34.56
122
- #
123
- # Float#magnitude is an alias for Float#abs.
124
- #
125
- def abs: () -> Float
126
-
127
- def abs2: () -> Float
128
-
129
- # Returns 0 if the value is positive, pi otherwise.
130
- #
131
- def angle: () -> (Integer | Float)
132
-
133
- # Returns 0 if the value is positive, pi otherwise.
134
- #
135
- alias arg angle
136
-
137
- # Returns the smallest number greater than or equal to `float` with a precision
138
- # of `ndigits` decimal digits (default: 0).
139
- #
140
- # When the precision is negative, the returned value is an integer with at least
141
- # `ndigits.abs` trailing zeros.
142
- #
143
- # Returns a floating point number when `ndigits` is positive, otherwise returns
144
- # an integer.
145
- #
146
- # 1.2.ceil #=> 2
147
- # 2.0.ceil #=> 2
148
- # (-1.2).ceil #=> -1
149
- # (-2.0).ceil #=> -2
150
- #
151
- # 1.234567.ceil(2) #=> 1.24
152
- # 1.234567.ceil(3) #=> 1.235
153
- # 1.234567.ceil(4) #=> 1.2346
154
- # 1.234567.ceil(5) #=> 1.23457
155
- #
156
- # 34567.89.ceil(-5) #=> 100000
157
- # 34567.89.ceil(-4) #=> 40000
158
- # 34567.89.ceil(-3) #=> 35000
159
- # 34567.89.ceil(-2) #=> 34600
160
- # 34567.89.ceil(-1) #=> 34570
161
- # 34567.89.ceil(0) #=> 34568
162
- # 34567.89.ceil(1) #=> 34567.9
163
- # 34567.89.ceil(2) #=> 34567.89
164
- # 34567.89.ceil(3) #=> 34567.89
165
- #
166
- # Note that the limited precision of floating point arithmetic might lead to
167
- # surprising results:
168
- #
169
- # (2.1 / 0.7).ceil #=> 4 (!)
170
- #
171
- def ceil: () -> Integer
172
- | (int digits) -> (Integer | Float)
173
-
174
- def clone: (?freeze: bool) -> self
175
-
176
- # Returns an array with both `numeric` and `float` represented as Float objects.
177
- #
178
- # This is achieved by converting `numeric` to a Float.
179
- #
180
- # 1.2.coerce(3) #=> [3.0, 1.2]
181
- # 2.5.coerce(1.1) #=> [1.1, 2.5]
182
- #
183
- def coerce: (Numeric) -> [Numeric, Numeric]
184
-
185
- def conj: () -> Float
186
-
187
- def conjugate: () -> Float
188
-
189
- # Returns the denominator (always positive). The result is machine dependent.
190
- #
191
- # See also Float#numerator.
192
- #
193
- def denominator: () -> Integer
194
-
195
- def div: (Numeric) -> Integer
196
-
197
- # See Numeric#divmod.
198
- #
199
- # 42.0.divmod(6) #=> [7, 0.0]
200
- # 42.0.divmod(5) #=> [8, 2.0]
201
- #
202
- def divmod: (Numeric) -> [Numeric, Numeric]
203
-
204
- def dup: () -> self
205
-
206
- # Returns `true` only if `obj` is a Float with the same value as `float`.
207
- # Contrast this with Float#==, which performs type conversions.
208
- #
209
- # 1.0.eql?(1) #=> false
210
- #
211
- # The result of `NaN.eql?(NaN)` is undefined, so an implementation-dependent
212
- # value is returned.
213
- #
214
- def eql?: (untyped) -> bool
215
-
216
- # Returns `float / numeric`, same as Float#/.
217
- #
218
- def fdiv: (Complex) -> Complex
219
- | (Numeric) -> Float
220
-
221
- # Returns `true` if `float` is a valid IEEE floating point number, i.e. it is
222
- # not infinite and Float#nan? is `false`.
223
- #
224
- def finite?: () -> bool
225
-
226
- # Returns the largest number less than or equal to `float` with a precision of
227
- # `ndigits` decimal digits (default: 0).
228
- #
229
- # When the precision is negative, the returned value is an integer with at least
230
- # `ndigits.abs` trailing zeros.
231
- #
232
- # Returns a floating point number when `ndigits` is positive, otherwise returns
233
- # an integer.
234
- #
235
- # 1.2.floor #=> 1
236
- # 2.0.floor #=> 2
237
- # (-1.2).floor #=> -2
238
- # (-2.0).floor #=> -2
239
- #
240
- # 1.234567.floor(2) #=> 1.23
241
- # 1.234567.floor(3) #=> 1.234
242
- # 1.234567.floor(4) #=> 1.2345
243
- # 1.234567.floor(5) #=> 1.23456
244
- #
245
- # 34567.89.floor(-5) #=> 0
246
- # 34567.89.floor(-4) #=> 30000
247
- # 34567.89.floor(-3) #=> 34000
248
- # 34567.89.floor(-2) #=> 34500
249
- # 34567.89.floor(-1) #=> 34560
250
- # 34567.89.floor(0) #=> 34567
251
- # 34567.89.floor(1) #=> 34567.8
252
- # 34567.89.floor(2) #=> 34567.89
253
- # 34567.89.floor(3) #=> 34567.89
254
- #
255
- # Note that the limited precision of floating point arithmetic might lead to
256
- # surprising results:
257
- #
258
- # (0.3 / 0.1).floor #=> 2 (!)
259
- #
260
- def floor: () -> Integer
261
- | (int digits) -> (Integer | Numeric)
262
-
263
- # Returns a hash code for this float.
264
- #
265
- # See also Object#hash.
266
- #
267
- def hash: () -> Integer
268
-
269
- def i: () -> Complex
270
-
271
- def imag: () -> Integer
272
-
273
- def imaginary: () -> Integer
274
-
275
- # Returns `nil`, -1, or 1 depending on whether the value is finite, `-Infinity`,
276
- # or `+Infinity`.
277
- #
278
- # (0.0).infinite? #=> nil
279
- # (-1.0/0.0).infinite? #=> -1
280
- # (+1.0/0.0).infinite? #=> 1
281
- #
282
- def infinite?: () -> Integer?
283
-
284
- alias inspect to_s
285
-
286
- def integer?: () -> bool
287
-
288
- # Returns the absolute value of `float`.
289
- #
290
- # (-34.56).abs #=> 34.56
291
- # -34.56.abs #=> 34.56
292
- # 34.56.abs #=> 34.56
293
- #
294
- # Float#magnitude is an alias for Float#abs.
295
- #
296
- alias magnitude abs
297
-
298
- # Returns the modulo after division of `float` by `other`.
299
- #
300
- # 6543.21.modulo(137) #=> 104.21000000000004
301
- # 6543.21.modulo(137.24) #=> 92.92999999999961
302
- #
303
- def modulo: (Numeric) -> Float
304
-
305
- # Returns `true` if `float` is an invalid IEEE floating point number.
306
- #
307
- # a = -1.0 #=> -1.0
308
- # a.nan? #=> false
309
- # a = 0.0/0.0 #=> NaN
310
- # a.nan? #=> true
311
- #
312
- def nan?: () -> bool
313
-
314
- # Returns `true` if `float` is less than 0.
315
- #
316
- def negative?: () -> bool
317
-
318
- # Returns the next representable floating point number.
319
- #
320
- # Float::MAX.next_float and Float::INFINITY.next_float is Float::INFINITY.
321
- #
322
- # Float::NAN.next_float is Float::NAN.
323
- #
324
- # For example:
325
- #
326
- # 0.01.next_float #=> 0.010000000000000002
327
- # 1.0.next_float #=> 1.0000000000000002
328
- # 100.0.next_float #=> 100.00000000000001
329
- #
330
- # 0.01.next_float - 0.01 #=> 1.734723475976807e-18
331
- # 1.0.next_float - 1.0 #=> 2.220446049250313e-16
332
- # 100.0.next_float - 100.0 #=> 1.4210854715202004e-14
333
- #
334
- # f = 0.01; 20.times { printf "%-20a %s\n", f, f.to_s; f = f.next_float }
335
- # #=> 0x1.47ae147ae147bp-7 0.01
336
- # # 0x1.47ae147ae147cp-7 0.010000000000000002
337
- # # 0x1.47ae147ae147dp-7 0.010000000000000004
338
- # # 0x1.47ae147ae147ep-7 0.010000000000000005
339
- # # 0x1.47ae147ae147fp-7 0.010000000000000007
340
- # # 0x1.47ae147ae148p-7 0.010000000000000009
341
- # # 0x1.47ae147ae1481p-7 0.01000000000000001
342
- # # 0x1.47ae147ae1482p-7 0.010000000000000012
343
- # # 0x1.47ae147ae1483p-7 0.010000000000000014
344
- # # 0x1.47ae147ae1484p-7 0.010000000000000016
345
- # # 0x1.47ae147ae1485p-7 0.010000000000000018
346
- # # 0x1.47ae147ae1486p-7 0.01000000000000002
347
- # # 0x1.47ae147ae1487p-7 0.010000000000000021
348
- # # 0x1.47ae147ae1488p-7 0.010000000000000023
349
- # # 0x1.47ae147ae1489p-7 0.010000000000000024
350
- # # 0x1.47ae147ae148ap-7 0.010000000000000026
351
- # # 0x1.47ae147ae148bp-7 0.010000000000000028
352
- # # 0x1.47ae147ae148cp-7 0.01000000000000003
353
- # # 0x1.47ae147ae148dp-7 0.010000000000000031
354
- # # 0x1.47ae147ae148ep-7 0.010000000000000033
355
- #
356
- # f = 0.0
357
- # 100.times { f += 0.1 }
358
- # f #=> 9.99999999999998 # should be 10.0 in the ideal world.
359
- # 10-f #=> 1.9539925233402755e-14 # the floating point error.
360
- # 10.0.next_float-10 #=> 1.7763568394002505e-15 # 1 ulp (unit in the last place).
361
- # (10-f)/(10.0.next_float-10) #=> 11.0 # the error is 11 ulp.
362
- # (10-f)/(10*Float::EPSILON) #=> 8.8 # approximation of the above.
363
- # "%a" % 10 #=> "0x1.4p+3"
364
- # "%a" % f #=> "0x1.3fffffffffff5p+3" # the last hex digit is 5. 16 - 5 = 11 ulp.
365
- #
366
- def next_float: () -> Float
367
-
368
- def nonzero?: () -> self?
369
-
370
- # Returns the numerator. The result is machine dependent.
371
- #
372
- # n = 0.3.numerator #=> 5404319552844595
373
- # d = 0.3.denominator #=> 18014398509481984
374
- # n.fdiv(d) #=> 0.3
375
- #
376
- # See also Float#denominator.
377
- #
378
- def numerator: () -> Integer
379
-
380
- # Returns 0 if the value is positive, pi otherwise.
381
- #
382
- alias phase angle
383
-
384
- def polar: () -> [ Float, Integer | Float ]
385
-
386
- # Returns `true` if `float` is greater than 0.
387
- #
388
- def positive?: () -> bool
389
-
390
- # Returns the previous representable floating point number.
391
- #
392
- # (-Float::MAX).prev_float and (-Float::INFINITY).prev_float is
393
- # -Float::INFINITY.
394
- #
395
- # Float::NAN.prev_float is Float::NAN.
396
- #
397
- # For example:
398
- #
399
- # 0.01.prev_float #=> 0.009999999999999998
400
- # 1.0.prev_float #=> 0.9999999999999999
401
- # 100.0.prev_float #=> 99.99999999999999
402
- #
403
- # 0.01 - 0.01.prev_float #=> 1.734723475976807e-18
404
- # 1.0 - 1.0.prev_float #=> 1.1102230246251565e-16
405
- # 100.0 - 100.0.prev_float #=> 1.4210854715202004e-14
406
- #
407
- # f = 0.01; 20.times { printf "%-20a %s\n", f, f.to_s; f = f.prev_float }
408
- # #=> 0x1.47ae147ae147bp-7 0.01
409
- # # 0x1.47ae147ae147ap-7 0.009999999999999998
410
- # # 0x1.47ae147ae1479p-7 0.009999999999999997
411
- # # 0x1.47ae147ae1478p-7 0.009999999999999995
412
- # # 0x1.47ae147ae1477p-7 0.009999999999999993
413
- # # 0x1.47ae147ae1476p-7 0.009999999999999992
414
- # # 0x1.47ae147ae1475p-7 0.00999999999999999
415
- # # 0x1.47ae147ae1474p-7 0.009999999999999988
416
- # # 0x1.47ae147ae1473p-7 0.009999999999999986
417
- # # 0x1.47ae147ae1472p-7 0.009999999999999985
418
- # # 0x1.47ae147ae1471p-7 0.009999999999999983
419
- # # 0x1.47ae147ae147p-7 0.009999999999999981
420
- # # 0x1.47ae147ae146fp-7 0.00999999999999998
421
- # # 0x1.47ae147ae146ep-7 0.009999999999999978
422
- # # 0x1.47ae147ae146dp-7 0.009999999999999976
423
- # # 0x1.47ae147ae146cp-7 0.009999999999999974
424
- # # 0x1.47ae147ae146bp-7 0.009999999999999972
425
- # # 0x1.47ae147ae146ap-7 0.00999999999999997
426
- # # 0x1.47ae147ae1469p-7 0.009999999999999969
427
- # # 0x1.47ae147ae1468p-7 0.009999999999999967
428
- #
429
- def prev_float: () -> Float
430
-
431
- # Returns `float / numeric`, same as Float#/.
432
- #
433
- def quo: (Complex) -> Complex
434
- | (Numeric) -> Float
435
-
436
- # Returns a simpler approximation of the value (flt-|eps| <= result <=
437
- # flt+|eps|). If the optional argument `eps` is not given, it will be chosen
438
- # automatically.
439
- #
440
- # 0.3.rationalize #=> (3/10)
441
- # 1.333.rationalize #=> (1333/1000)
442
- # 1.333.rationalize(0.01) #=> (4/3)
443
- #
444
- # See also Float#to_r.
445
- #
446
- def rationalize: (?Numeric eps) -> Rational
447
-
448
- def real: () -> Float
449
-
450
- def real?: () -> true
451
-
452
- def rect: () -> [ Float, Numeric ]
453
-
454
- alias rectangular rect
455
-
456
- def remainder: (Numeric) -> Float
457
-
458
- # Returns `float` rounded to the nearest value with a precision of `ndigits`
459
- # decimal digits (default: 0).
460
- #
461
- # When the precision is negative, the returned value is an integer with at least
462
- # `ndigits.abs` trailing zeros.
463
- #
464
- # Returns a floating point number when `ndigits` is positive, otherwise returns
465
- # an integer.
466
- #
467
- # 1.4.round #=> 1
468
- # 1.5.round #=> 2
469
- # 1.6.round #=> 2
470
- # (-1.5).round #=> -2
471
- #
472
- # 1.234567.round(2) #=> 1.23
473
- # 1.234567.round(3) #=> 1.235
474
- # 1.234567.round(4) #=> 1.2346
475
- # 1.234567.round(5) #=> 1.23457
476
- #
477
- # 34567.89.round(-5) #=> 0
478
- # 34567.89.round(-4) #=> 30000
479
- # 34567.89.round(-3) #=> 35000
480
- # 34567.89.round(-2) #=> 34600
481
- # 34567.89.round(-1) #=> 34570
482
- # 34567.89.round(0) #=> 34568
483
- # 34567.89.round(1) #=> 34567.9
484
- # 34567.89.round(2) #=> 34567.89
485
- # 34567.89.round(3) #=> 34567.89
486
- #
487
- # If the optional `half` keyword argument is given, numbers that are half-way
488
- # between two possible rounded values will be rounded according to the specified
489
- # tie-breaking `mode`:
490
- #
491
- # * `:up` or `nil`: round half away from zero (default)
492
- # * `:down`: round half toward zero
493
- # * `:even`: round half toward the nearest even number
494
- #
495
- # 2.5.round(half: :up) #=> 3
496
- # 2.5.round(half: :down) #=> 2
497
- # 2.5.round(half: :even) #=> 2
498
- # 3.5.round(half: :up) #=> 4
499
- # 3.5.round(half: :down) #=> 3
500
- # 3.5.round(half: :even) #=> 4
501
- # (-2.5).round(half: :up) #=> -3
502
- # (-2.5).round(half: :down) #=> -2
503
- # (-2.5).round(half: :even) #=> -2
504
- #
505
- def round: (?half: :up | :down | :even) -> Integer
506
- | (int digits, ?half: :up | :down | :even) -> (Integer | Float)
507
-
508
- def step: (?Numeric limit, ?Numeric step) { (Float) -> void } -> self
509
- | (?Numeric limit, ?Numeric step) -> Enumerator[Float, self]
510
- | (?by: Numeric, ?to: Numeric) { (Float) -> void } -> self
511
- | (?by: Numeric, ?to: Numeric) -> Enumerator[Float, self]
512
-
513
- def to_c: () -> Complex
514
-
515
- # Since `float` is already a Float, returns `self`.
516
- #
517
- def to_f: () -> Float
518
-
519
- # Returns the `float` truncated to an Integer.
520
- #
521
- # 1.2.to_i #=> 1
522
- # (-1.2).to_i #=> -1
523
- #
524
- # Note that the limited precision of floating point arithmetic might lead to
525
- # surprising results:
526
- #
527
- # (0.3 / 0.1).to_i #=> 2 (!)
528
- #
529
- # #to_int is an alias for #to_i.
530
- #
531
- def to_i: () -> Integer
532
-
533
- # Returns the `float` truncated to an Integer.
534
- #
535
- # 1.2.to_i #=> 1
536
- # (-1.2).to_i #=> -1
537
- #
538
- # Note that the limited precision of floating point arithmetic might lead to
539
- # surprising results:
540
- #
541
- # (0.3 / 0.1).to_i #=> 2 (!)
542
- #
543
- # #to_int is an alias for #to_i.
544
- #
545
- alias to_int to_i
546
-
547
- # Returns the value as a rational.
548
- #
549
- # 2.0.to_r #=> (2/1)
550
- # 2.5.to_r #=> (5/2)
551
- # -0.75.to_r #=> (-3/4)
552
- # 0.0.to_r #=> (0/1)
553
- # 0.3.to_r #=> (5404319552844595/18014398509481984)
554
- #
555
- # NOTE: 0.3.to_r isn't the same as "0.3".to_r. The latter is equivalent to
556
- # "3/10".to_r, but the former isn't so.
557
- #
558
- # 0.3.to_r == 3/10r #=> false
559
- # "0.3".to_r == 3/10r #=> true
560
- #
561
- # See also Float#rationalize.
562
- #
563
- def to_r: () -> Rational
564
-
565
- # Returns a string containing a representation of `self`. As well as a fixed or
566
- # exponential form of the `float`, the call may return `NaN`, `Infinity`, and
567
- # `-Infinity`.
568
- #
569
- def to_s: () -> String
570
-
571
- # Returns `float` truncated (toward zero) to a precision of `ndigits` decimal
572
- # digits (default: 0).
573
- #
574
- # When the precision is negative, the returned value is an integer with at least
575
- # `ndigits.abs` trailing zeros.
576
- #
577
- # Returns a floating point number when `ndigits` is positive, otherwise returns
578
- # an integer.
579
- #
580
- # 2.8.truncate #=> 2
581
- # (-2.8).truncate #=> -2
582
- # 1.234567.truncate(2) #=> 1.23
583
- # 34567.89.truncate(-2) #=> 34500
584
- #
585
- # Note that the limited precision of floating point arithmetic might lead to
586
- # surprising results:
587
- #
588
- # (0.3 / 0.1).truncate #=> 2 (!)
589
- #
590
- def truncate: () -> Integer
591
- | (Integer ndigits) -> (Integer | Float)
592
-
593
- # Returns `true` if `float` is 0.0.
594
- #
595
- def zero?: () -> bool
596
- end
597
-
598
- # The minimum number of significant decimal digits in a double-precision
599
- # floating point.
600
- #
601
- # Usually defaults to 15.
602
- #
603
- Float::DIG: Integer
604
-
605
- # The difference between 1 and the smallest double-precision floating point
606
- # number greater than 1.
607
- #
608
- # Usually defaults to 2.2204460492503131e-16.
609
- #
610
- Float::EPSILON: Float
611
-
612
- # An expression representing positive infinity.
613
- #
614
- Float::INFINITY: Float
615
-
616
- # The number of base digits for the `double` data type.
617
- #
618
- # Usually defaults to 53.
619
- #
620
- Float::MANT_DIG: Integer
621
-
622
- # The largest possible integer in a double-precision floating point number.
623
- #
624
- # Usually defaults to 1.7976931348623157e+308.
625
- #
626
- Float::MAX: Float
627
-
628
- # The largest positive exponent in a double-precision floating point where 10
629
- # raised to this power minus 1.
630
- #
631
- # Usually defaults to 308.
632
- #
633
- Float::MAX_10_EXP: Integer
634
-
635
- # The largest possible exponent value in a double-precision floating point.
636
- #
637
- # Usually defaults to 1024.
638
- #
639
- Float::MAX_EXP: Integer
640
-
641
- # The smallest positive normalized number in a double-precision floating point.
642
- #
643
- # Usually defaults to 2.2250738585072014e-308.
644
- #
645
- # If the platform supports denormalized numbers, there are numbers between zero
646
- # and Float::MIN. 0.0.next_float returns the smallest positive floating point
647
- # number including denormalized numbers.
648
- #
649
- Float::MIN: Float
650
-
651
- # The smallest negative exponent in a double-precision floating point where 10
652
- # raised to this power minus 1.
653
- #
654
- # Usually defaults to -307.
655
- #
656
- Float::MIN_10_EXP: Integer
657
-
658
- # The smallest possible exponent value in a double-precision floating point.
659
- #
660
- # Usually defaults to -1021.
661
- #
662
- Float::MIN_EXP: Integer
663
-
664
- # An expression representing a value which is "not a number".
665
- #
666
- Float::NAN: Float
667
-
668
- # The base of the floating point, or number of unique digits used to represent
669
- # the number.
670
- #
671
- # Usually defaults to 2 on most systems, which would represent a base-10
672
- # decimal.
673
- #
674
- Float::RADIX: Integer
675
-
676
- # Deprecated, do not use.
677
- #
678
- # Represents the rounding mode for floating point addition at the start time.
679
- #
680
- # Usually defaults to 1, rounding to the nearest number.
681
- #
682
- # Other modes include:
683
- #
684
- # -1
685
- # : Indeterminable
686
- # 0
687
- # : Rounding towards zero
688
- # 1
689
- # : Rounding to the nearest number
690
- # 2
691
- # : Rounding towards positive infinity
692
- # 3
693
- # : Rounding towards negative infinity
694
- #
695
- #
696
- Float::ROUNDS: Integer