From 81ca8ccb10433c233caf894041d7c36bfcc66bca Mon Sep 17 00:00:00 2001 From: luizcroc Date: Mon, 31 May 2010 20:58:49 +0000 Subject: [PATCH] Same change as Revision r1395 for C++ port: Small speedup, per issue 422 git-svn-id: http://zxing.googlecode.com/svn/trunk@1404 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- cpp/core/src/zxing/common/reedsolomon/GF256.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/cpp/core/src/zxing/common/reedsolomon/GF256.cpp b/cpp/core/src/zxing/common/reedsolomon/GF256.cpp index 35fc6923..51b621e8 100644 --- a/cpp/core/src/zxing/common/reedsolomon/GF256.cpp +++ b/cpp/core/src/zxing/common/reedsolomon/GF256.cpp @@ -109,13 +109,10 @@ int GF256::multiply(int a, int b) { if (a == 0 || b == 0) { return 0; } - if (a == 1) { - return b; - } - if (b == 1) { - return a; - } - return exp_[(log_[a] + log_[b]) % 255]; + int logSum = log_[a] + log_[b]; + // index is a sped-up alternative to logSum % 255 since sum + // is in [0,510]. Thanks to jmsachs for the idea + return exp_[(logSum & 0xFF) + (logSum >> 8)]; } GF256 GF256::QR_CODE_FIELD(0x011D); // x^8 + x^4 + x^3 + x^2 + 1 -- 2.20.1