fwt 0.2.1 → 1.0.0

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 (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: