ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1949 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Numerical Methods for DSP Systems in C
Don Morgan
0 471 13232 2
Francis Glassborow
maths; algorithms
Appeared in:
There is an awful lot of maths and not a lot of code. As I am far from being an expert on Digital Signal Processing I am going to skip that aspect of the book by issuing an invitation to any reader who specialises in that area to review this book from that viewpoint (just volunteer and I will send you the review copy unless someone else has beaten you to it.)

The choice of C (supported by some assembler level programming) seems reasonable to me, after all C was designed as a systems language. So let me examine some of the author's code. On page 59 I find the following (after some pre-processor directives and the definition of A as a 32 by 32

array of

void main() {
 but 	int i, j;
	static n=4;
	double a[11][21];
	void ge();
			for(j=0; j<2*n; j++) {
				for (i=0; i<n; i++)
						a[i+1][j+1] = A[i][j];
I will stop there because I think this is enough to scare any self respecting programmer.

Ignore the return type of main() as the code calls exit() to terminate. But what is the purpose of that

. Surely the writer does not intend to call
recursively? No he does not. I think that
because I think he wants to produce a manifest constant.

Next, why the dimensions of

? I think, after careful study, that his intention is to ignore the zeroeth column and row and have an array with a two to one ratio between rows and columns. But what else is significant? That is why a 10 by 20 array? And so the questions mount. The code is completely incomprehensible. I know what every line does but have absolutely no idea as to how they are related.

Then we have that archaic declaration of a function inside the body of

. A complete waste because its first use later in the code will do just as well. A prototype out front (and a meaningful name) would be much more use.

How about that nested block on the next line? What does the writer think it does? Of course it actually does nothing.

I hope the author's knowledge of DSPs and numerical methods is of a higher standard because the book does not pass muster on the coding side.