fibonacci 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/fibonacci/fibonacci.c +86 -1
- data/lib/fibonacci/version.rb +1 -1
- metadata +3 -2
data/ext/fibonacci/fibonacci.c
CHANGED
@@ -80,6 +80,26 @@ rb_matrix_mul(VALUE ary1, VALUE ary2)
|
|
80
80
|
return tmp_ary;
|
81
81
|
}
|
82
82
|
|
83
|
+
/* call-seq:
|
84
|
+
* fib.matrix(n)
|
85
|
+
*
|
86
|
+
* Returns a 2x2 matrix(2-dimensional array).
|
87
|
+
*
|
88
|
+
* fib.matrix(10)
|
89
|
+
* #=> [[89, 55], [55, 34]]
|
90
|
+
*
|
91
|
+
* fib.matrix(100)
|
92
|
+
* #=> [[573147844013817084101, 354224848179261915075], [354224848179261915075,218922995834555169026]]
|
93
|
+
*
|
94
|
+
* arr = fib.matrix(15)
|
95
|
+
* #=> [[987, 610], [610, 377]]
|
96
|
+
*
|
97
|
+
* arr[0][1] or arr[1][0] is the value of nth term
|
98
|
+
*
|
99
|
+
* Refer to http://en.wikipedia.org/wiki/Fibonacci_number#Matrix_form
|
100
|
+
*
|
101
|
+
*/
|
102
|
+
|
83
103
|
static VALUE
|
84
104
|
rb_matrix_form(VALUE self, VALUE n)
|
85
105
|
{
|
@@ -144,6 +164,25 @@ rb_matrix_form(VALUE self, VALUE n)
|
|
144
164
|
return res_ary;
|
145
165
|
}
|
146
166
|
|
167
|
+
/* call-seq:
|
168
|
+
* fib[n]
|
169
|
+
*
|
170
|
+
* Returns a Fixnum or Bignum.
|
171
|
+
*
|
172
|
+
* fib[100]
|
173
|
+
* #=> 354224848179261915075
|
174
|
+
*
|
175
|
+
* fib[10]
|
176
|
+
* #=> 55
|
177
|
+
*
|
178
|
+
* fib[200]
|
179
|
+
* #=> 280571172992510140037611932413038677189525
|
180
|
+
*
|
181
|
+
* The value of nth term is calculated iteratively.
|
182
|
+
*
|
183
|
+
* Refer to http://en.wikipedia.org/wiki/Fibonacci_number#First_identity
|
184
|
+
*/
|
185
|
+
|
147
186
|
static VALUE
|
148
187
|
rb_iterative_val(VALUE self, VALUE n)
|
149
188
|
{
|
@@ -187,6 +226,26 @@ rb_iterative_val(VALUE self, VALUE n)
|
|
187
226
|
return fib_n;
|
188
227
|
}
|
189
228
|
|
229
|
+
/* call-seq:
|
230
|
+
* fib.terms(n)
|
231
|
+
*
|
232
|
+
* Returns a array with the first n terms of the series
|
233
|
+
*
|
234
|
+
* fib.terms(5)
|
235
|
+
* #=> [0, 1, 1, 2, 3]
|
236
|
+
*
|
237
|
+
* fib.terms(10)
|
238
|
+
* #=> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
|
239
|
+
*
|
240
|
+
* fib.terms(15)
|
241
|
+
* #=> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
|
242
|
+
*
|
243
|
+
* fib.terms(0)
|
244
|
+
* #=> []
|
245
|
+
*
|
246
|
+
* Refer to http://en.wikipedia.org/wiki/Fibonacci_number#First_identity
|
247
|
+
*/
|
248
|
+
|
190
249
|
static VALUE
|
191
250
|
terms(VALUE self, VALUE n)
|
192
251
|
{
|
@@ -223,6 +282,19 @@ terms(VALUE self, VALUE n)
|
|
223
282
|
return ary;
|
224
283
|
}
|
225
284
|
|
285
|
+
/* call-seq:
|
286
|
+
* fib.print(n)
|
287
|
+
*
|
288
|
+
* Prints the first n terms of the series.
|
289
|
+
*
|
290
|
+
* fib.print(1)
|
291
|
+
* #=> 0
|
292
|
+
*
|
293
|
+
* fib.print(2)
|
294
|
+
* #=> 0
|
295
|
+
* 1
|
296
|
+
*/
|
297
|
+
|
226
298
|
static VALUE
|
227
299
|
print(VALUE self, VALUE n)
|
228
300
|
{
|
@@ -230,7 +302,6 @@ print(VALUE self, VALUE n)
|
|
230
302
|
VALUE fib_n_1 = ONE;
|
231
303
|
VALUE fib_n_2 = ZERO;
|
232
304
|
VALUE fib_n = ZERO;
|
233
|
-
|
234
305
|
if(TYPE(n) != T_FIXNUM)
|
235
306
|
{
|
236
307
|
rb_raise(rb_eArgError, "Invalid argument for type Fixnum");
|
@@ -265,6 +336,20 @@ index_of(VALUE self, VALUE val)
|
|
265
336
|
return Qnil;
|
266
337
|
}
|
267
338
|
|
339
|
+
/* call-seq:
|
340
|
+
* fib.num_digits(n)
|
341
|
+
*
|
342
|
+
* Returns the number of digits in the nth term of the series
|
343
|
+
*
|
344
|
+
* fib.num_digits(10)
|
345
|
+
* #=> 2
|
346
|
+
*
|
347
|
+
* fib.num_digits(100)
|
348
|
+
* #=> 21
|
349
|
+
*
|
350
|
+
* Refer to http://en.wikipedia.org/wiki/Fibonacci_number#Computation_by_rounding
|
351
|
+
*/
|
352
|
+
|
268
353
|
static VALUE
|
269
354
|
num_digits(VALUE self, VALUE n)
|
270
355
|
{
|
data/lib/fibonacci/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = "0.1.
|
1
|
+
VERSION = "0.1.5"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fibonacci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-14 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A Ruby gem for exploring Fibonacci series
|
15
15
|
email:
|
@@ -48,3 +48,4 @@ signing_key:
|
|
48
48
|
specification_version: 3
|
49
49
|
summary: Fibonacci
|
50
50
|
test_files: []
|
51
|
+
has_rdoc:
|