sparse_matrix 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -2
- data/README.md +5 -0
- data/documentacion/Gemfile.html +114 -0
- data/documentacion/Gemfile_lock.html +179 -0
- data/documentacion/Guardfile.html +144 -0
- data/documentacion/LICENSE_txt.html +131 -0
- data/documentacion/Object.html +224 -0
- data/documentacion/README_md.html +169 -0
- data/documentacion/Rakefile.html +119 -0
- data/documentacion/SparseMatrix/AbstractMatrix.html +418 -0
- data/documentacion/SparseMatrix/DenseMatrix.html +462 -0
- data/documentacion/SparseMatrix/Fraction.html +749 -0
- data/documentacion/SparseMatrix/SparseMatrix.html +553 -0
- data/documentacion/SparseMatrix/SparseVector.html +292 -0
- data/documentacion/SparseMatrix.html +226 -0
- data/documentacion/created.rid +13 -0
- data/documentacion/documentacion/created_rid.html +109 -0
- data/documentacion/images/add.png +0 -0
- data/documentacion/images/arrow_up.png +0 -0
- data/documentacion/images/brick.png +0 -0
- data/documentacion/images/brick_link.png +0 -0
- data/documentacion/images/bug.png +0 -0
- data/documentacion/images/bullet_black.png +0 -0
- data/documentacion/images/bullet_toggle_minus.png +0 -0
- data/documentacion/images/bullet_toggle_plus.png +0 -0
- data/documentacion/images/date.png +0 -0
- data/documentacion/images/delete.png +0 -0
- data/documentacion/images/find.png +0 -0
- data/documentacion/images/loadingAnimation.gif +0 -0
- data/documentacion/images/macFFBgHack.png +0 -0
- data/documentacion/images/package.png +0 -0
- data/documentacion/images/page_green.png +0 -0
- data/documentacion/images/page_white_text.png +0 -0
- data/documentacion/images/page_white_width.png +0 -0
- data/documentacion/images/plugin.png +0 -0
- data/documentacion/images/ruby.png +0 -0
- data/documentacion/images/tag_blue.png +0 -0
- data/documentacion/images/tag_green.png +0 -0
- data/documentacion/images/transparent.png +0 -0
- data/documentacion/images/wrench.png +0 -0
- data/documentacion/images/wrench_orange.png +0 -0
- data/documentacion/images/zoom.png +0 -0
- data/documentacion/index.html +106 -0
- data/documentacion/js/darkfish.js +155 -0
- data/documentacion/js/jquery.js +18 -0
- data/documentacion/js/navigation.js +142 -0
- data/documentacion/js/search.js +94 -0
- data/documentacion/js/search_index.js +1 -0
- data/documentacion/js/searcher.js +228 -0
- data/documentacion/rdoc.css +595 -0
- data/documentacion/sparse_matrix_gemspec.html +138 -0
- data/documentacion/table_of_contents.html +178 -0
- data/lib/sparse_matrix/version.rb +1 -1
- data/lib/sparse_matrix.rb +194 -162
- metadata +51 -1
data/lib/sparse_matrix.rb
CHANGED
@@ -1,7 +1,27 @@
|
|
1
|
+
# = Fichero que contiene la gema para el trabajo con matrices.
|
2
|
+
#
|
3
|
+
# Operaciones con matrices *dispersas* y *densas*.
|
4
|
+
#
|
5
|
+
# Authors: KEVIN ISAAC ROBAYNA HERNANDEZ, JOSE ANTONIO RODRIGUEZ LEANDRO
|
6
|
+
#
|
7
|
+
# Email: kevinirobaynahdez@gmail.com, alu0100696691@ull.edu.es
|
8
|
+
#
|
9
|
+
|
1
10
|
require "sparse_matrix/version"
|
2
11
|
|
12
|
+
|
13
|
+
# == Modulo que contiene la gema para el trabajo con matrices.
|
14
|
+
#
|
15
|
+
# Para la realizacion de esta practica se ha creado una jeraquia de clases. Todo esta integrado en un module llamado SparseMatrix,
|
16
|
+
# el cual contiene la clase madre abstracta AbstractMatrix con la que creamos las clases SparseMatrix y DenseMatrix.
|
17
|
+
# Para almacenar los datos de la matriz dispersa usamos un vector de duplas usando la clase SparseVector.
|
18
|
+
# Los metodos implementados usando metodologia funcional son:
|
19
|
+
#
|
20
|
+
# * suma
|
21
|
+
# * multiplicacion
|
22
|
+
#
|
3
23
|
module SparseMatrix
|
4
|
-
class AbstractMatrix
|
24
|
+
class AbstractMatrix #clase abstracta matrix
|
5
25
|
|
6
26
|
def initialize(r=0,c=0)
|
7
27
|
@row = r
|
@@ -23,15 +43,14 @@ module SparseMatrix
|
|
23
43
|
end
|
24
44
|
|
25
45
|
def +(b)
|
26
|
-
|
46
|
+
raise "Error. metodo no definido."
|
47
|
+
end
|
48
|
+
def *(b)
|
49
|
+
raise "Error. metodo no definido."
|
50
|
+
end
|
27
51
|
end
|
28
|
-
|
29
|
-
def *(b)
|
30
|
-
raise "Error. metodo no definido."
|
31
|
-
end
|
32
|
-
end
|
33
52
|
|
34
|
-
class SparseVector
|
53
|
+
class SparseVector #clase para guardar vector de tuplas
|
35
54
|
def initialize(i=0,j=0,v=0)
|
36
55
|
@i = i
|
37
56
|
@j = j
|
@@ -45,7 +64,7 @@ class SparseVector
|
|
45
64
|
|
46
65
|
end
|
47
66
|
|
48
|
-
class SparseMatrix < AbstractMatrix
|
67
|
+
class SparseMatrix < AbstractMatrix #matrix dispersa
|
49
68
|
|
50
69
|
def initialize(*args)
|
51
70
|
@n,@m=args[0],args[1]
|
@@ -67,7 +86,7 @@ class SparseMatrix < AbstractMatrix
|
|
67
86
|
@MAT<<vector
|
68
87
|
end
|
69
88
|
|
70
|
-
def to_s
|
89
|
+
def to_s #devuelve una cadena string
|
71
90
|
cadena=""
|
72
91
|
for i in 0...@n
|
73
92
|
cadena+="["
|
@@ -83,7 +102,7 @@ class SparseMatrix < AbstractMatrix
|
|
83
102
|
|
84
103
|
end
|
85
104
|
|
86
|
-
def valor(k,j)
|
105
|
+
def valor(k,j) #para buscar un valor especifico
|
87
106
|
dev=0
|
88
107
|
for i in 0...@MAT.size
|
89
108
|
if(@MAT[i].i==k) && (@MAT[i].j==j)
|
@@ -93,8 +112,7 @@ class SparseMatrix < AbstractMatrix
|
|
93
112
|
dev
|
94
113
|
end
|
95
114
|
|
96
|
-
|
97
|
-
def max
|
115
|
+
def max #elemento maximo de la matrix
|
98
116
|
maximo=@MAT[0].value
|
99
117
|
for i in 0...@m do
|
100
118
|
if maximo < @MAT[i].value
|
@@ -102,56 +120,56 @@ class SparseMatrix < AbstractMatrix
|
|
102
120
|
end
|
103
121
|
end
|
104
122
|
return maximo
|
105
|
-
|
123
|
+
end
|
106
124
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
end
|
113
|
-
end
|
114
|
-
return minimo
|
125
|
+
def min #elemento minimo de la matrix
|
126
|
+
minimo=@MAT[0].value
|
127
|
+
for i in (0...@m) do
|
128
|
+
if minimo > @MAT[i].value
|
129
|
+
minimo=@MAT[i].value
|
115
130
|
end
|
131
|
+
end
|
132
|
+
return minimo
|
133
|
+
end
|
116
134
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
end
|
135
|
+
def +(other) #metodo para sumar matrices, dispersa como densa
|
136
|
+
if other.instance_of? SparseMatrix
|
137
|
+
o=DenseMatrix.new(@n,@m,Array.new(@n){Array.new(@m)})
|
138
|
+
0.upto @MAT.size-1 do |i|
|
139
|
+
0.upto @MAT.size-1 do |j|
|
140
|
+
o.mat[i][j]=self.valor(i,j)+other.valor(i,j)
|
124
141
|
end
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
142
|
+
end
|
143
|
+
return SparseMatrix.new(@n,@m,o.mat) #SparseMatrix.new(@n,@m,o)
|
144
|
+
else
|
145
|
+
o=DenseMatrix.new(@n,@m,Array.new(@n){Array.new(@m)})
|
146
|
+
0.upto @n-1 do |i|
|
147
|
+
0.upto @m-1 do |j|
|
148
|
+
o.mat[i][j]=self.valor(i,j)+other.mat[i][j]
|
132
149
|
end
|
133
|
-
return o
|
134
150
|
end
|
151
|
+
return o
|
135
152
|
end
|
153
|
+
end
|
136
154
|
|
137
|
-
|
155
|
+
def *(b) #metodo para multiplicar matrices, dispersa como densas
|
138
156
|
if b.instance_of? SparseMatrix
|
139
157
|
c = DenseMatrix.new(2,2,[[0.0,0.0],[0.0,0.0]])
|
140
|
-
|
141
|
-
|
158
|
+
0.upto @MAT.size-1 do |i|
|
159
|
+
0.upto @MAT.size-1 do |j|
|
142
160
|
c.mat[i][j]=0
|
143
|
-
|
161
|
+
0.upto @MAT.size-1 do |k|
|
144
162
|
c.mat[i][j] += self.valor(i,k)*b.valor(k,j)
|
145
163
|
end
|
146
164
|
end
|
147
165
|
end
|
148
166
|
c
|
149
|
-
|
167
|
+
else
|
150
168
|
c = DenseMatrix.new(2,2,[[0.0,0.0],[0.0,0.0]])
|
151
|
-
|
152
|
-
|
169
|
+
0.upto @MAT.size-1 do |i|
|
170
|
+
0.upto @MAT.size-1 do |j|
|
153
171
|
c.mat[i][j]=0
|
154
|
-
|
172
|
+
0.upto @MAT.size-1 do |k|
|
155
173
|
c.mat[i][j] += self.valor(i,k)*b.mat[k][j]
|
156
174
|
end
|
157
175
|
end
|
@@ -159,11 +177,10 @@ class SparseMatrix < AbstractMatrix
|
|
159
177
|
c
|
160
178
|
end
|
161
179
|
end
|
162
|
-
|
163
180
|
end
|
164
181
|
|
165
182
|
|
166
|
-
class DenseMatrix < AbstractMatrix
|
183
|
+
class DenseMatrix < AbstractMatrix #clase para matrices densas
|
167
184
|
@mat
|
168
185
|
def initialize(r=0,c=0,matrix=[])
|
169
186
|
super(r,c)
|
@@ -172,7 +189,7 @@ class DenseMatrix < AbstractMatrix
|
|
172
189
|
|
173
190
|
attr_accessor :mat,:r,:c
|
174
191
|
|
175
|
-
def to_s()
|
192
|
+
def to_s() #devuelve cadena string
|
176
193
|
s="| "
|
177
194
|
for i in (0... @mat.length)
|
178
195
|
for j in (0... @mat.length)
|
@@ -188,7 +205,7 @@ class DenseMatrix < AbstractMatrix
|
|
188
205
|
s += "|"
|
189
206
|
end
|
190
207
|
|
191
|
-
def print_matrix()
|
208
|
+
def print_matrix() #metodo que imprime la matrix en pantalla
|
192
209
|
printf "| "
|
193
210
|
for i in (0... @mat.length)
|
194
211
|
for j in (0... @mat.length)
|
@@ -204,53 +221,53 @@ class DenseMatrix < AbstractMatrix
|
|
204
221
|
printf "|"
|
205
222
|
end
|
206
223
|
|
207
|
-
def +(b)
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
end
|
214
|
-
end
|
215
|
-
c
|
216
|
-
else
|
217
|
-
|
218
|
-
|
219
|
-
|
224
|
+
def +(b) #suma de matrices, tando densas como dispersas
|
225
|
+
c = DenseMatrix.new(2,2,[[0.0,0.0],[0.0,0.0]])
|
226
|
+
if b.instance_of? SparseMatrix
|
227
|
+
0.upto @mat.size-1 do |i|
|
228
|
+
0.upto @mat.size-1 do |j|
|
229
|
+
c.mat[i][j] = self.mat[i][j]+b.valor(i,j)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
c
|
233
|
+
else
|
234
|
+
0.upto @mat.size-1 do |i|
|
235
|
+
0.upto @mat.size-1 do |j|
|
236
|
+
c.mat[i][j] = self.mat[i][j]+b.mat[i][j]
|
237
|
+
end
|
238
|
+
end
|
239
|
+
c
|
240
|
+
end
|
220
241
|
end
|
221
|
-
end
|
222
|
-
c
|
223
|
-
end
|
224
|
-
end
|
225
242
|
|
226
|
-
def *(b)
|
227
|
-
if b.instance_of? SparseMatrix
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
243
|
+
def *(b) #multiplicacion de matrices, dispersas y densas
|
244
|
+
if b.instance_of? SparseMatrix
|
245
|
+
c = DenseMatrix.new(2,2,[[0.0,0.0],[0.0,0.0]])
|
246
|
+
0.upto @mat.length-1 do |i|
|
247
|
+
0.upto @mat.length-1 do |j|
|
248
|
+
c.mat[i][j]=0
|
249
|
+
0.upto @mat.length-1 do |k|
|
250
|
+
c.mat[i][j] += @mat[i][k]*b.valor(k,j)
|
251
|
+
end
|
234
252
|
end
|
235
253
|
end
|
236
|
-
|
237
|
-
c
|
254
|
+
c
|
238
255
|
else
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
256
|
+
c = DenseMatrix.new(2,2,[[0.0,0.0],[0.0,0.0]])
|
257
|
+
0.upto @mat.length-1 do |i|
|
258
|
+
0.upto @mat.length-1 do |j|
|
259
|
+
c.mat[i][j]=0
|
260
|
+
0.upto @mat.length-1 do |k|
|
261
|
+
c.mat[i][j] += @mat[i][k]*b.mat[k][j]
|
262
|
+
end
|
245
263
|
end
|
246
264
|
end
|
265
|
+
c
|
266
|
+
end
|
247
267
|
end
|
248
|
-
c
|
249
|
-
end
|
250
|
-
end
|
251
268
|
end
|
252
269
|
|
253
|
-
class Fraction
|
270
|
+
class Fraction #clase para operaciones de numeros fraccionales
|
254
271
|
include Comparable
|
255
272
|
def initialize (*args)
|
256
273
|
if args.size == 2
|
@@ -264,97 +281,112 @@ class Fraction
|
|
264
281
|
end
|
265
282
|
attr_accessor :num_,:den_
|
266
283
|
|
267
|
-
def to_s
|
284
|
+
def to_s #devuelve string
|
268
285
|
"#{@num_}/#{@den_}"
|
269
286
|
end
|
270
|
-
def to_f
|
287
|
+
def to_f #devuelve float
|
271
288
|
@num_.to_f/@den_.to_f
|
272
289
|
end
|
273
290
|
|
274
|
-
def ==(b)
|
275
|
-
|
276
|
-
end
|
277
|
-
|
278
|
-
def abs
|
279
|
-
c = @num_.to_f/@den_.to_f
|
280
|
-
return c.abs
|
281
|
-
end
|
282
|
-
|
283
|
-
def reciprocal
|
284
|
-
f=Fraction.new
|
285
|
-
f.num_=@den_
|
286
|
-
f.den_ = @num_
|
287
|
-
f
|
288
|
-
end
|
291
|
+
def ==(b) #comparar
|
292
|
+
return @num_.eql?(b.num_) && @den_.eql?(b.den_)
|
293
|
+
end
|
289
294
|
|
290
|
-
def
|
291
|
-
|
292
|
-
|
295
|
+
def abs #valor absoluto
|
296
|
+
c = @num_.to_f/@den_.to_f
|
297
|
+
return c.abs
|
298
|
+
end
|
293
299
|
|
294
|
-
def
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
r.num_ = @num_ * b.den_ + b.num_ * @den_
|
301
|
-
r.den_ = @den_ * b.den_
|
302
|
-
end
|
303
|
-
r.num_,r.den_ = minimiza(r.num_,r.den_)
|
304
|
-
return r
|
305
|
-
end
|
300
|
+
def reciprocal #devuelve fraccion dada la vuelta
|
301
|
+
f=Fraction.new
|
302
|
+
f.num_=@den_
|
303
|
+
f.den_ = @num_
|
304
|
+
f
|
305
|
+
end
|
306
306
|
|
307
|
-
def
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
r.
|
317
|
-
|
318
|
-
|
307
|
+
def -@ #opuesto
|
308
|
+
Fraction.new(-@num_,@den_)
|
309
|
+
end
|
310
|
+
|
311
|
+
def +(b) #suma de numeros fraccionarios
|
312
|
+
r=Fraction.new
|
313
|
+
if b.instance_of? Fraction
|
314
|
+
if (@den_==b.den_)
|
315
|
+
r.num_ = @num_ + b.num_
|
316
|
+
r.den_ = @den_
|
317
|
+
else
|
318
|
+
r.num_ = @num_ * b.den_ + b.num_ * @den_
|
319
|
+
r.den_ = @den_ * b.den_
|
320
|
+
end
|
321
|
+
else
|
322
|
+
r=self+Fraction.new(b,1)
|
323
|
+
end
|
324
|
+
r.num_,r.den_ = minimiza(r.num_,r.den_)
|
325
|
+
r
|
326
|
+
end
|
319
327
|
|
320
|
-
def
|
321
|
-
r =Fraction.new
|
322
|
-
|
323
|
-
|
324
|
-
r.num_
|
325
|
-
|
326
|
-
|
328
|
+
def -(b) #resta de numeros fraccionarios
|
329
|
+
r =Fraction.new
|
330
|
+
if b.instance_of? Fraction
|
331
|
+
if (@den_==b.den_)
|
332
|
+
r.num_ = @num_ - b.num_
|
333
|
+
r.den_ = @den_
|
334
|
+
else
|
335
|
+
r.num_ = @num_ * b.den_ - b.num_ * @den_
|
336
|
+
r.den_ = @den_ * b.den_
|
337
|
+
end
|
338
|
+
else
|
339
|
+
r=self-Fraction.new(b,1)
|
340
|
+
end
|
341
|
+
r.num_,r.den_ = minimiza(r.num_,r.den_)
|
342
|
+
r
|
343
|
+
end
|
327
344
|
|
328
|
-
def
|
329
|
-
r =Fraction.new
|
330
|
-
|
331
|
-
r.
|
332
|
-
r.
|
333
|
-
r
|
334
|
-
|
345
|
+
def *(b) #multiplicacion de numeros fraccionarios
|
346
|
+
r =Fraction.new
|
347
|
+
if b.instance_of? Fraction
|
348
|
+
r.num_=@num_ * b.num_
|
349
|
+
r.den_=@den_ * b.den_
|
350
|
+
r.num_,r.den_ = minimiza(r.num_,r.den_)
|
351
|
+
r
|
352
|
+
else
|
353
|
+
r=self*Fraction.new(b,1)
|
354
|
+
end
|
355
|
+
end
|
335
356
|
|
336
|
-
def
|
337
|
-
|
338
|
-
|
357
|
+
def /(b) #division de numeros fraccionarios
|
358
|
+
r =Fraction.new
|
359
|
+
if b.instance_of? Fraction
|
360
|
+
r.num_=@num_ / b.num_
|
361
|
+
r.den_=@den_ * b.den_
|
362
|
+
r.num_,r.den_ = minimiza(r.num_,r.den_)
|
363
|
+
r
|
364
|
+
else
|
365
|
+
r=self/Fraction.new(b,1)
|
366
|
+
end
|
367
|
+
end
|
339
368
|
|
340
|
-
def
|
341
|
-
|
342
|
-
|
343
|
-
y = y/d
|
344
|
-
return x,y
|
345
|
-
end
|
369
|
+
def <=>(b) #comparar
|
370
|
+
self.to_f <=> b.to_f
|
371
|
+
end
|
346
372
|
|
347
|
-
def
|
348
|
-
|
349
|
-
|
350
|
-
|
373
|
+
def minimiza(x,y) #minimizar fraccion
|
374
|
+
d = gcd(x,y)
|
375
|
+
x = x/d
|
376
|
+
y = y/d
|
377
|
+
return x,y
|
378
|
+
end
|
351
379
|
|
352
|
-
def
|
353
|
-
|
354
|
-
while v != 0
|
355
|
-
u, v = v, u % v
|
380
|
+
def coerce(b)
|
381
|
+
[self,Fraction.new(b,1)]
|
356
382
|
end
|
357
|
-
u
|
358
383
|
end
|
359
384
|
|
385
|
+
def gcd(u, v) #maximo comun divisor
|
386
|
+
u, v = u.abs, v.abs
|
387
|
+
while v != 0
|
388
|
+
u, v = v, u % v
|
389
|
+
end
|
390
|
+
u
|
391
|
+
end
|
360
392
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sparse_matrix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KevinRobayna
|
@@ -108,6 +108,56 @@ files:
|
|
108
108
|
- LICENSE.txt
|
109
109
|
- README.md
|
110
110
|
- Rakefile
|
111
|
+
- documentacion/Gemfile.html
|
112
|
+
- documentacion/Gemfile_lock.html
|
113
|
+
- documentacion/Guardfile.html
|
114
|
+
- documentacion/LICENSE_txt.html
|
115
|
+
- documentacion/Object.html
|
116
|
+
- documentacion/README_md.html
|
117
|
+
- documentacion/Rakefile.html
|
118
|
+
- documentacion/SparseMatrix.html
|
119
|
+
- documentacion/SparseMatrix/AbstractMatrix.html
|
120
|
+
- documentacion/SparseMatrix/DenseMatrix.html
|
121
|
+
- documentacion/SparseMatrix/Fraction.html
|
122
|
+
- documentacion/SparseMatrix/SparseMatrix.html
|
123
|
+
- documentacion/SparseMatrix/SparseVector.html
|
124
|
+
- documentacion/created.rid
|
125
|
+
- documentacion/documentacion/created_rid.html
|
126
|
+
- documentacion/images/add.png
|
127
|
+
- documentacion/images/arrow_up.png
|
128
|
+
- documentacion/images/brick.png
|
129
|
+
- documentacion/images/brick_link.png
|
130
|
+
- documentacion/images/bug.png
|
131
|
+
- documentacion/images/bullet_black.png
|
132
|
+
- documentacion/images/bullet_toggle_minus.png
|
133
|
+
- documentacion/images/bullet_toggle_plus.png
|
134
|
+
- documentacion/images/date.png
|
135
|
+
- documentacion/images/delete.png
|
136
|
+
- documentacion/images/find.png
|
137
|
+
- documentacion/images/loadingAnimation.gif
|
138
|
+
- documentacion/images/macFFBgHack.png
|
139
|
+
- documentacion/images/package.png
|
140
|
+
- documentacion/images/page_green.png
|
141
|
+
- documentacion/images/page_white_text.png
|
142
|
+
- documentacion/images/page_white_width.png
|
143
|
+
- documentacion/images/plugin.png
|
144
|
+
- documentacion/images/ruby.png
|
145
|
+
- documentacion/images/tag_blue.png
|
146
|
+
- documentacion/images/tag_green.png
|
147
|
+
- documentacion/images/transparent.png
|
148
|
+
- documentacion/images/wrench.png
|
149
|
+
- documentacion/images/wrench_orange.png
|
150
|
+
- documentacion/images/zoom.png
|
151
|
+
- documentacion/index.html
|
152
|
+
- documentacion/js/darkfish.js
|
153
|
+
- documentacion/js/jquery.js
|
154
|
+
- documentacion/js/navigation.js
|
155
|
+
- documentacion/js/search.js
|
156
|
+
- documentacion/js/search_index.js
|
157
|
+
- documentacion/js/searcher.js
|
158
|
+
- documentacion/rdoc.css
|
159
|
+
- documentacion/sparse_matrix_gemspec.html
|
160
|
+
- documentacion/table_of_contents.html
|
111
161
|
- lib/sparse_matrix.rb
|
112
162
|
- lib/sparse_matrix/version.rb
|
113
163
|
- sparse_matrix.gemspec
|