| Class | RQRCode::QRPolynomial |
| In: |
lib/rqrcode/qrcode/qr_polynomial.rb
|
| Parent: | Object |
# File lib/rqrcode/qrcode/qr_polynomial.rb, line 16
16: def initialize( num, shift )
17: raise QRCodeRunTimeError, "#{num.size}/#{shift}" if num.empty?
18: offset = 0
19:
20: while offset < num.size && num[offset] == 0
21: offset = offset + 1
22: end
23:
24: @num = Array.new( num.size - offset + shift )
25:
26: ( 0...num.size - offset ).each do |i|
27: @num[i] = num[i + offset]
28: end
29: end
# File lib/rqrcode/qrcode/qr_polynomial.rb, line 56
56: def mod( e )
57: if get_length - e.get_length < 0
58: return self
59: end
60:
61: ratio = QRMath.glog(get(0)) - QRMath.glog(e.get(0))
62: num = Array.new(get_length)
63:
64: ( 0...get_length ).each do |i|
65: num[i] = get(i)
66: end
67:
68: ( 0...e.get_length ).each do |i|
69: tmp = num[i].nil? ? 0 : num[i]
70: num[i] = tmp ^ QRMath.gexp(QRMath.glog(e.get(i)) + ratio)
71: end
72:
73: return QRPolynomial.new( num, 0 ).mod(e)
74: end
# File lib/rqrcode/qrcode/qr_polynomial.rb, line 42
42: def multiply( e )
43: num = Array.new( get_length + e.get_length - 1 )
44:
45: ( 0...get_length ).each do |i|
46: ( 0...e.get_length ).each do |j|
47: tmp = num[i + j].nil? ? 0 : num[i + j]
48: num[i + j] = tmp ^ QRMath.gexp(QRMath.glog( get(i) ) + QRMath.glog(e.get(j)))
49: end
50: end
51:
52: return QRPolynomial.new( num, 0 )
53: end