Class: RQRCode::QRPolynomial
- Inherits:
-
Object
- Object
- RQRCode::QRPolynomial
- Defined in:
- lib/rqrcode/qrcode/qr_polynomial.rb
Overview
:nodoc:
Instance Method Summary collapse
- #get(index) ⇒ Object
- #get_length ⇒ Object
-
#initialize(num, shift) ⇒ QRPolynomial
constructor
A new instance of QRPolynomial.
- #mod(e) ⇒ Object
- #multiply(e) ⇒ Object
Constructor Details
#initialize(num, shift) ⇒ QRPolynomial
Returns a new instance of QRPolynomial.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rqrcode/qrcode/qr_polynomial.rb', line 16 def initialize( num, shift ) raise QRCodeRunTimeError, "#{num.size}/#{shift}" if num.empty? offset = 0 while offset < num.size && num[offset] == 0 offset = offset + 1 end @num = Array.new( num.size - offset + shift ) ( 0...num.size - offset ).each do |i| @num[i] = num[i + offset] end end |
Instance Method Details
#get(index) ⇒ Object
32 33 34 |
# File 'lib/rqrcode/qrcode/qr_polynomial.rb', line 32 def get( index ) @num[index] end |
#get_length ⇒ Object
37 38 39 |
# File 'lib/rqrcode/qrcode/qr_polynomial.rb', line 37 def get_length @num.size end |
#mod(e) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rqrcode/qrcode/qr_polynomial.rb', line 56 def mod( e ) if get_length - e.get_length < 0 return self end ratio = QRMath.glog(get(0)) - QRMath.glog(e.get(0)) num = Array.new(get_length) ( 0...get_length ).each do |i| num[i] = get(i) end ( 0...e.get_length ).each do |i| tmp = num[i].nil? ? 0 : num[i] num[i] = tmp ^ QRMath.gexp(QRMath.glog(e.get(i)) + ratio) end return QRPolynomial.new( num, 0 ).mod(e) end |
#multiply(e) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rqrcode/qrcode/qr_polynomial.rb', line 42 def multiply( e ) num = Array.new( get_length + e.get_length - 1 ) ( 0...get_length ).each do |i| ( 0...e.get_length ).each do |j| tmp = num[i + j].nil? ? 0 : num[i + j] num[i + j] = tmp ^ QRMath.gexp(QRMath.glog( get(i) ) + QRMath.glog(e.get(j))) end end return QRPolynomial.new( num, 0 ) end |