fwt 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/fwt.gemspec +3 -3
  3. data/lib/fwt.rb +7 -15
  4. data/tests/test_fwt.rb +3 -3
  5. metadata +5 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46983f7b164a5ba936747fd3b8a143e45e65b78e
4
- data.tar.gz: 6c092163b85d8bb1f2a9515dd4fbe4f07153b9ea
3
+ metadata.gz: fc144da4af3fc808cc68b7d0076a31bd3b1e35ce
4
+ data.tar.gz: 267e98bc7c5cb063a5d60dfcd51149e3064e361c
5
5
  SHA512:
6
- metadata.gz: 817725fed18aa2dfd3bc91719ab57ea1d99606c8816f3de015448afc7c66d0e98c09b38e8c82cdfa949efb5b2ff9d97b2ffe801a0465a0cc37460a70eb3995e5
7
- data.tar.gz: 6a9f1e54075aa06bb01f72cceaf9870b07c10225b2df3ec541bc86ae1ebac7bd164a3bd9120aec6d3051ebe191ff5c3a803740d42fc6598fd41329324e35b551
6
+ metadata.gz: 1b10014fc405e7675c82e80013bbc0c879f579a4d1708840a47835fb7454c431b2e1426dd9f8bee4151bbb4d6f2d4db28db5ddcff22def78ad885f616914097f
7
+ data.tar.gz: 69a995a36d714b6052c62a1be6b30f0f940be2e062078baf4dbff4a6e923bb1096d15a75af60bef40a2645e49af1cfb56ae577af9d039af6d6febe571e72995e
@@ -1,13 +1,13 @@
1
1
  # -*- ruby -*-
2
- _VERSION = "0.2.1"
2
+ _VERSION = "1.0.0"
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fwt"
6
6
  s.version = _VERSION
7
- s.date = "2013-03-03"
7
+ s.date = "2013-03-09"
8
8
  s.summary = "Fast Walsh Transform native Ruby implementations."
9
9
  s.email = "pjs@alum.mit.edu"
10
- s.description = "Implements Hadamard- and sequency-ordered Fast Walsh Transforms as extensions of class Array."
10
+ s.description = "Implements Hadamard- and sequency-ordered Fast Walsh Transforms as extensions of class Array. Adds a boolean power_of_2? method to class Integer."
11
11
  s.author = "Paul J Sanchez"
12
12
  s.files = %w[
13
13
  fwt.gemspec
data/lib/fwt.rb CHANGED
@@ -12,9 +12,8 @@ class Array
12
12
  # Perform a fast Walsh transformation using a Manz sequency ordered
13
13
  # in-place algorithm. The array is modified by this algorithm.
14
14
  def sequency
15
- raise Exception.new(
16
- "#{self.class}.#{__method__}: array length must be a power of 2"
17
- ) unless length.power_of_2?
15
+ raise "#{self.class}.#{__method__}: array length must be a power of 2" \
16
+ unless length.power_of_2?
18
17
  j = 0
19
18
  0.upto(length - 3) do |i| # Bit reversal sorting
20
19
  self[i], self[j] = self[j], self[i] if (i < j)
@@ -34,13 +33,9 @@ class Array
34
33
  j = i + group * offset
35
34
  k = j + lag
36
35
  if (group.odd?)
37
- temp = self[j]
38
- self[j] -= self[k]
39
- self[k] += temp
36
+ self[j], self[k] = self[j] - self[k], self[j] + self[k]
40
37
  else
41
- temp = self[j]
42
- self[j] += self[k]
43
- self[k] = temp - self[k]
38
+ self[j], self[k] = self[j] + self[k], self[j] - self[k]
44
39
  end
45
40
  end
46
41
  end
@@ -52,9 +47,8 @@ class Array
52
47
  # Perform a fast Walsh transformation using a Hadamard (natural) ordered
53
48
  # in-place algorithm. The array is modified by this algorithm.
54
49
  def hadamard
55
- raise Exception.new(
56
- "#{self.class}.#{__method__}: array length must be a power of 2"
57
- ) unless length.power_of_2?
50
+ raise "#{self.class}.#{__method__}: array length must be a power of 2" \
51
+ unless length.power_of_2?
58
52
  lag = 1
59
53
  while lag < length
60
54
  offset = lag << 1
@@ -63,9 +57,7 @@ class Array
63
57
  lag.times do |base|
64
58
  j = base + group * offset
65
59
  k = j + lag
66
- temp = self[j]
67
- self[j] += self[k]
68
- self[k] = temp - self[k]
60
+ self[j], self[k] = self[j] + self[k], self[j] - self[k]
69
61
  end
70
62
  end
71
63
  lag = offset
@@ -15,7 +15,7 @@ class FWT_test < Test::Unit::TestCase
15
15
  assert_equal [0,0,0,0,0,0,0,1].hadamard, [1, -1, -1, 1, -1, 1, 1, -1]
16
16
  assert_equal [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1].sequency,
17
17
  [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1]
18
- assert_raise Exception do # non-power-of-2 array
18
+ assert_raise RuntimeError do # non-power-of-2 array
19
19
  [0,0,1].hadamard
20
20
  end
21
21
  end
@@ -31,10 +31,10 @@ class FWT_test < Test::Unit::TestCase
31
31
  assert_equal [0,0,0,0,0,0,0,1].sequency, [1, -1, 1, -1, 1, -1, 1, -1]
32
32
  assert_equal [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0].sequency,
33
33
  [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1]
34
- assert_raise Exception do # non-power-of-2 array
34
+ assert_raise RuntimeError do # non-power-of-2 array
35
35
  [0,0,1].sequency
36
36
  end
37
- assert_raise Exception do # empty array
37
+ assert_raise RuntimeError do # empty array
38
38
  [].sequency
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fwt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul J Sanchez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-03 00:00:00.000000000 Z
11
+ date: 2013-03-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Implements Hadamard- and sequency-ordered Fast Walsh Transforms as extensions
14
- of class Array.
14
+ of class Array. Adds a boolean power_of_2? method to class Integer.
15
15
  email: pjs@alum.mit.edu
16
16
  executables: []
17
17
  extensions: []
@@ -41,8 +41,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
41
41
  version: '0'
42
42
  requirements: []
43
43
  rubyforge_project:
44
- rubygems_version: 2.0.0
44
+ rubygems_version: 2.0.2
45
45
  signing_key:
46
46
  specification_version: 4
47
47
  summary: Fast Walsh Transform native Ruby implementations.
48
48
  test_files: []
49
+ has_rdoc: