Boost logo

Boost :

From: Paul A. Bristow (boost_at_[hidden])
Date: 2002-11-20 14:54:47

Driven by an local requirement, I have recently coded a Verhoeff decimal check
digit program,

based on the Java calculator embedded in
by Jonathon Mohr, mohrj_at_[hidden]
Augustana University College, 4901 - 46 Ave., Camrose, AB T4V 2R3 Canada

For example, if you have a decimal number 1357, the Verhoeff check digit is 3
and if you enter the complete number 13573 incorrectly nearly all human errors,
like transposition, will be detected.

(But I note that this appears to give different results to the one in Numeric
Recipes in C++ - someone wrote about this on Boost recently - which references
the same sources, mainly Neal AR Wagner and Paul S Putter, Comm of the ACM,
32(1) 106 to 110, and the original but difficult to obtain paper by J M

This is by far the best human error detecting check digit scheme and would seem
to be a good candidate for a Boost library (though ISBN, credit card and US EFT
schemes could also be made available though they are not recommended for new

Two questions:

1 Is there any interest in these schemes? Which?

2 It would be valuable to generalise this to other more compact number systems,
for example ones based on 16 (familiar Hexadecimal) and 32 (letters and

(I have recently opened a bank account with a 13 decimal digit identifier! This
could be as little as 5 with a 32 character letters and numbers scheme.)

The Deutsche Bundesbank bank notes are numbered using letters as well as numbers
and use a extended Verhoeff check digit scheme. Does anyone have any details,
especially programs, showing how this works? Or does anyone know of other
extensions to other number & letter schemes?



Paul A Bristow, Prizet Farmhouse, Kendal, Cumbria, LA8 8AB UK
+44 1539 561830 Mobile +44 7714 33 02 04
Mobile mailto:pabristow_at_[hidden]

Numerical Recipes in C++, p 904 - 905W H Press, S A Teukolsky, W T Vettering, B
P Flannery, ISBN 0 521 75033 4.

SNOMED® Clinical Terms (First Release Technical Reference Manual
First Release (January 2002), Annex B. Check-digit computation, p 30 to 34
uses Jonathan Mohr Javascript checkdigit.htm (copy in checkdigit.txt)
based on code at http://www.augustana.

Boost list run by bdawes at, gregod at, cpdaniel at, john at