Slashdot Mirror


Math Toolkit for Real-Time Programming

oxgoad writes "Need a closed-form algorithm to derive square roots? Stymied by strange and scary results from your favorite compiler's math library? Math Toolkit for Real-Time Programming by Jack W. Crenshaw attempts to shed some numerical light. Read on for the goods." Oxgoad's review continues below. Math Toolkit for Real-Time Programming author Jack W. Crenshaw pages 466 publisher CMP Books rating 8 reviewer oxgoad ISBN 1929629095 summary A casual discussion of algorithms ranging from abs to numerical calculus.

Who & What

Jack W. Crenshaw, Ph.D. (Physics) wrote his first computer program in 1956 for an IBM 650. He has been working with real-time software for embedded systems ever since -- contributing several years to NASA during the Mercury, Gemini, and Apollo programs. In addition to other activities, he is currently a contributing editor for Embedded Systems Programming magazine and author of the Programmer's Toolbox column.

In Math Toolkit for Real-Time Programming, his effort is focused on describing the pitfalls of vendor-provided math libraries and providing robust replacements. In section one he gives a thorough overview of constants and the various manners in which to declare them, naming conventions, and error handling. As the work progresses, in section two, he builds a library of proven algorithms ranging from square roots to trigonometrical functions to logarithms. Did you suffer through calculus in college with a barely passing grade? Section three will teach you more about numerical calculus in a half-hour than you may have learned in three semesters.

Kudos

Math Toolkit is written in an easy to understand anecdotal manner. You might be tempted to think that the author was animatedly relating the history of computing square roots while having lunch with you. This method works very well and keeps what could be a rather heavy subject from becoming too much of a burden. Most chapters have historical tidbits liberally sprinkled throughout.

Even if college algebra left you with post-traumatic stress disorder, you will not have any trouble with section two. Indeed, you may find yourself intently following the author on the trail of the perfect arctangent algorithm -- much as a sleuth on the trail of a villain.

The depth of knowledge shown, and its presentation, is exceptional. The author's years of experience are evident in his self-confident writing style. You will rarely see a clearer overview of numerical calculus. Quibbles

The cover of the book states: "Do big math on small machines." This, combined with the Real-Time Programming phrase in the title, might lead one to believe that the book's primary audience is intended to be the embedded microcontroller crowd. Sadly, not so. There is very little here for the die-hard assembler programmer other than some very handy integer square root and sine routines - and these examples are in C++. Based on the cover, I would have liked to see a greater emphasis on processors lacking a floating point unit. Also, some code examples in pseudo-assembler would have been welcome, as the author chose C++ as the language of choice for all examples.

Crimes

As is so often the case nowadays, there are various typographical errors scattered throughout. This seems to be an epidemic in current technical books. Fortunately, it didn't affect the readability of Math Toolkit.

Conclusions

I believe Math Toolkit for Real-Time Programming would be a great, perhaps mandatory, addition to the bookshelf of anyone that is involved in writing code that has a heavy math component. Other than the somewhat misleading cover, I cannot find anything truly negative to say about this work. Congratulations are in order to Mr. Crenshaw on a job well done.

The book also includes a CD-ROM of all example source code. In reality, to get the best benefit from the book, you should mostly ignore the CD-ROM and work through the examples. To quote the author: "Never trust a person who merely hands you an equation."

Table of Contents

  1. Getting The Constants Right
  2. A Few Easy Pieces
  3. Dealing with Errors
  4. Fundamental Functions
  5. Getting the Sines Right
  6. Arctangents: An Angle-Space Odyssey
  7. Logging in the Answers
  8. Numerical Calculus
  9. Calculus by the Numbers
  10. Putting Numerical Calculus to Work
  11. The Runge-Kutta Method
  12. Dynamic Simulation
  • Appendix A: A C++ Tools Library
Disclosure

I received a review copy of this book from the publisher. Thus, my loyalties and opinions may be completely skewed. Caveat Lector.

You can purchase Math Toolkit for Real-Time Programming from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

37 of 153 comments (clear)

  1. is Real Time programming still a Real Issue? by HealYourChurchWebSit · · Score: 3, Interesting

    Back in the day, a book like this would have been a real life saver for those of us slugging it out with brain-damaged operating systems (e.g. MS-DOS). From things like MIDI sequencers to guidance systems, the need for real-time speed was a real issue.

    However, with the the maturity of operating systems, many of them now include device drivers, APIs, objects and other goodies that insulate the average programmer from the hassle of issues like latency. So my question is, other than good academic study, would it pay for the rest of us to spend the $$ on such a book?

    Though I admit, having to write my share of real-time apps back in the day has me curious enough to put the book on my wishlist.

    --
    --- have you healed your church website?
    1. Re:is Real Time programming still a Real Issue? by beanerspace · · Score: 4, Interesting

      Someone marked this question redundant? Guess that shows you jerks are everywhere.

      Hey, I understand completely what you're saying. I for one am glad I don't have to deal with such as latency and pre-emption. In fact, here is a link to a nifty article entitled "Real Time Issues in Linux" that essentially sums up what you asked with a resounding yes.

    2. Re:is Real Time programming still a Real Issue? by Hayzeus · · Score: 5, Insightful
      However, with the the maturity of operating systems, many of them now include device drivers, APIs, objects and other goodies that insulate the average programmer from the hassle of issues like latency. So my question is, other than good academic study, would it pay for the rest of us to spend the $$ on such a book?

      The above generally doesn't apply to anyone doing serious embedded work with small and midrange microcontrollers. Often an operating system is thin to non-existent on these platforms. Some of the lower-range parts may have a 2-byte hardware stack, 28 bytes of RAM and maybe 512 bytes of program memory. Obviously, you won't be doing much sophisticated numerical work on these smallest of microcontrollers, but for more midrange parts, I've found this book to be a godsend.

      The book is not aimed at PC users.

    3. Re:is Real Time programming still a Real Issue? by GGardner · · Score: 3, Interesting

      If you want to control a robot by putting a bunch of cheap 8-bit PICs on board, you are going to be hard pressed to find any nice device drivers, API, objects and other goodies.

    4. Re:is Real Time programming still a Real Issue? by ammie · · Score: 4, Interesting

      Yes. Banks, old satallite programs, messaging systems...etc.

      I work with a group of eight other people updating 40 year old Assembler on an IBM Series 1. Something tells me that if this was included in our training programs, those that are
      SUF
      FER
      ING
      through the digit-crunching wouldn't have such a hard time. Most people consider this back-in-the-day, but there's an aaaawwwful lot out there that still reeks of old german engineering, and chunk-button ATMs.

      --
      {...reality is wrong, Dreams are for real...}
    5. Re:is Real Time programming still a Real Issue? by cheeseSource · · Score: 3, Informative

      I actually have this book. It does read fairly well with some good examples: although I should note that I haven't finished it yet. One thing it is especially usefull for is defining a math library that's accurate. Crenshaw talks about how a lot of compiler's built in function/methods don't hold up to rigorous math and he's right. But instead of just complaining about it he walks through solid alternatives. Overall it's pretty good and would provide some quality code for open projects. IMHO anyway.

      --
      (Sponsored by cheeseSource for President 2012)
    6. Re:is Real Time programming still a Real Issue? by DocTillo · · Score: 3, Interesting

      Not all computers are desktop PCs. Have you ever heard of Palm Pilots? These things are slow! I searched some time to find a decent integer square root routine to calculate object distances in my elite for palmos game. I would have loved such a book ...

    7. Re:is Real Time programming still a Real Issue? by Phronesis · · Score: 4, Insightful

      I am currently trying to get a data-acquisition computer to keep up with a five thousand frame-per-second video feed while doing processing between the frames. Hard real-time is a real issue for me.

    8. Re:is Real Time programming still a Real Issue? by jspayne · · Score: 5, Informative
      Real Time != Real Fast

      This deserves some more explanation, since everyone here seems to have missed this point.

      A Real Time system is one where the ouptut isn't correct unless it arrives on time. Real Time systems are deterministic - not necessarily fast. The key is to use bounded-time algorithims so that you can predict the worst case execution time at compile time. RTOS's aren't designed to be fast, they are designed to have deterministic schedulers and kernel services.

      Of course, faster processors make it easier to meet real time deadlines, but as processors get faster I'm seeing engineers ignore the real time analysis and design because the code passed the last test they ran. Then they are surprised when it fails in the field...

      Jeff

  2. Wow, I'm old, I haven't seen Runge-Kutta in years by typical+geek · · Score: 5, Insightful

    I remember when having a solid math background was de reguire for a programmer. Of course, I'm talking the mid 80's, engineering school and Fortran, so I'm kind of krufty.

    I wonder how much better could we be if coders knew basic math, if they know how those little bitty chips actually computed the sine of something instead of assuming it works. We would probably have rock solid operating systems without all the glitzy GUI stuf..

  3. flimsy review by rfischer · · Score: 5, Insightful

    How does the book compare to the classics: Numerical Recipes, The Art of Computer Programming, etc?

    1. Re:flimsy review by StCredZero · · Score: 3, Informative

      The subject matter of this book is slightly different, since it has an emphasis on real-time. If you're just interested in crunching a large problem as fast as possible, then latency is not an issue.

      BTW, if anyone wants to take a gander at Numerical Recipes in C/Fortran they are available here.

  4. An indispensible treasure by PhysicsGenius · · Score: 3, Troll
    In my field, it is absolute essential that one squeeze every last bit of math power out of the CPU. So this books occupies a place of honor on my shelf and I refer to it almost daily when I write my Perl scripts.

    I'm surprised to see it posted on /., though, because he's pretty harsh towards the gaming community. In fact, he says near the beginning that game-related technology in CPUs (MMX and so forth) is taking away much-needed brainpower from research that should be reaching towards making chips do more math per unit time (not to mention driving up production costs for toy-obsessed, joyless loners). He calls for an immediate end to the pandering that Intel et al do to get into the pocketbooks of the socially-inept, technology pseudo-elite and wants real reform in the area of empowering science.

    Powerful stuff.

    1. Re:An indispensible treasure by ubermuffin · · Score: 5, Funny

      Not to nitpick here, but if you honestly wanted to "squeeze every last bit of math power out of the CPU", would you really be writing Perl scripts?

      Just wondering...

      -ubermuffin

  5. Re:Wow, I'm old, I haven't seen Runge-Kutta in yea by Havokmon · · Score: 3, Interesting
    I wonder how much better could we be if coders knew basic math

    Funny this topic should come up. I just did a 'Store Locator' for the company I work for (I'm the IT Manager, belive it or not). All I have is your basic HS diploma, and in creating the search, I realized I don't know a damn thing about sine and cosine. I don't know how they're used, or how they're applied. I have a feeling that they're somehow related to geometry (which makes sense, seeing I have to get a distance between two points on a curve - the earth), but I'm not sure.

    Sure, it's probably taken me longer to write this post, than it took to find the php code I used as a basis for the search, but how much math is REALLY needed overall?

    I slept through school, I did really bad, all because I felt it was worthless. I did feel that my business class, business law, and basic Algebra has been useful. But overall, it wasn't worth my time. Hell I had a physics teacher who'd pick on me because I was flunking (it's amazing what good test grades + 0 homework does to you), but I just found physics interesting - jeez, it was only HS. I was testing the waters, not padding my GPA. I believe that's what's HS is FOR.

    And if you KNOW what you want to do (I knew I wanted to fix/program computers when I played on my Apple ][ in 6th grade), what the hell is college for?

    The ease of the internet sure hasn't helped my perception.

    Am I the only one?

    --
    "I can't give you a brain, so I'll give you a diploma" - The Great Oz (blatently stolen sig)
  6. Re:Wow, I'm old, I haven't seen Runge-Kutta in yea by ohboy-sleep · · Score: 4, Interesting

    When I went for my Comp Sci bachelor's I was amazed at how many math-phobics there were in my Comp Sci classes. As part of earning the degree you had to take 4 specified math classes (Calc 1 & 2, Linear Systems, Probability). You only had to take one more math class to get a minor in mathematics, Calculus 3.

    Now I've always been big on math but I was kind of surprised at how few people were willing to take a single class to earn a full-fledged minor.

  7. Forth Algorithms by Anonymous Coward · · Score: 4, Interesting

    The Forth literature contains many examples of high-performance hardware-integer-math-only routines. A core feature of most Forth algos is rescaling to a power of two space at the start of the algo and from it at the end. This allows bit shift operators to do their stuff. It can take non-trivial fiddling to rescale algorithms - hence, it's nice to just look them up.

    Unfortunately, it's tricky to find Forth books these days.

    That's a shame, because along with Smalltalk, Lisp and APL, I think Forth is one of the "mind expanding" languages all programmers should at least experience, instead of just deciding C/Java/C++/VB is the one true language.

  8. Neglected subject, good review, integer!=assembly by wfmcwalter · · Score: 5, Interesting
    This is a subject that's rather neglected - three years of college math didn't go very far in letting me understand how math (fp and otherwise) is actually done in discrete systems.

    A year (or so) ago I attended a lecture given by Guy Steele (of Lisp/Java/ Crunchly fame) on his proposal to alter how IEEE floating point numbers are mapped to real numbers. It quickly flew over my head, but gave a great insight into the whole field. Steele then had a fair old "discussion" with the one person in the audience whose head hadn't been overflown (sic), as there was plainly still much controversy left in this area. On trying to do some "why didn't I get this stuff at college" reading, I found there wasn't a great deal of literature.

    The reviewer's concern that coprocessor-less systems should be covered is valid, but I'm not sure going as far as assembly is necessary. For example, I once had the privilige of reading through Hitachi's libm implementation for their H8 series microprocessor/microcontroller (one would be generous to call H8 a 16-bit system, and ungenerous to call it an 8-bit system). With one small exception (I think the cos table lookup) the whole thing was in (quite readable) C, and (at least for basic libm stuff) performance was perfectly acceptable. For didactic purposes, a C (or sane C++) implementation would be the thing one would want to find in a book - I get very annoyed at embedded books where the examples are written in asm for the author's favourite (obscure) microcontroller.

    --
    ## W.Finlay McWalter ## http://www.mcwalter.org ##
  9. Under covered subject; average review... by Svartalf · · Score: 4, Interesting

    Embedded != Assembly coding.

    To be honest, a lot of embedded coding is done with C or C++ these days. I've been following Crenshaw's articles in Embedded Developer magazine for years now. He explains a lot of what they try to teach in college Calc, etc. in simple, practical terms, and reduces it to usable algorithms.

    I'd probably buy the book and add it to my shelf.

    --
    I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
  10. Re:Wow, I'm old, I haven't seen Runge-Kutta in yea by wunderhorn1 · · Score: 3, Insightful
    Well yeah, man, if you want to be grinding out php and html or doing admin work for the rest of your life, sure, there's no reason to get a higher education, and if you're happy with what you're doing then that's great.

    But to get a job writing computer graphics software, or audio processing, or designing any sort of embedded hardware, knowledge of advanced math is required. The people who want to do this kind of work pursue higher educations, and if they enjoy what they're doing then that's great, too.

    --
    Karma: Bored. (Thinking about resurrecting the "Anyone else is an imposter" joke.)
  11. College Math by BobTheJanitor · · Score: 3, Interesting

    I graduated as a Math/CS double major from Drake University, where almost all CS majors also got a Math degree because the CS prereqs covered all but 3 of the Math prereqs. It has actually helped me enormously as a programmer to know math: in the past month, I've needed transformation matrices, sine/cosine stuff, and a bunch of other things that, granted, could have been lifted verbatim from Google groups, but it's often faster (and the code is better) if I just do it myself.

  12. No, computers don't need math by A+nonymous+Coward · · Score: 3, Interesting

    I've been programming since 1968, and very little had anything to do with math. People give me the same line, wow, I'm no good with math, I couldn't program, and don't believe me when I say computers add and subtract, multiply once in a while (array subscripting usually), and hardly ever divide.

    Scientific or engineering programming, they need the math because they are math programming. The rest, forget it, maybe you add some numbers for a shopping cart, multiply for sales tax, but programming has little use for math.

    I learned long ago that when an 8 bitter needs trig functions, you use a look up table generated externally.

    1. Re:No, computers don't need math by Anonymous Coward · · Score: 3, Insightful
      programming has little use for math.
      Somewhere in Palo Alto, California, God is cringing. Here's why:
      I am told that the courts are trying to make a distinction between
      mathematical algorithms and nonmathematical algorithms. To a computer
      scientist, this makes no sense, because every algorithm is as
      mathematical as anything could be. An algorithm is an abstract
      concept unrelated to physical laws of the universe.

      Nor is it possible to distinguish between "numerical" and
      "nonnumerical" algorithms, as if numbers were somehow different from
      other kinds of precise information. All data are numbers, and all
      numbers are data.
      So maybe most of the math is trivial, but that's not the same as being useless... :-p
    2. Re:No, computers don't need math by naasking · · Score: 3, Insightful

      Perhaps you should rephrase these statements to "programming often has little to do numerical math". Programming has everything to do with Discrete math (which is formal reasoning and logic).

  13. Yes, it's an interesting book... by joto · · Score: 3, Interesting
    Not being exactly a math whizard myself, I found this book extremely entertaining. It's pretty easy to see that the author is a heavy follower of the KISS philosophy. He tries to keep it simple not just in his code, but also in his explanations. It is possible to understand most of his explanations, even if you don't know much about differential equations, fft's or anything else.

    As for the title, I agree it's a bit misleading. The book has pretty little to do about real-time (in fact nothing, as far as I could see). What it really should be called is "Computer arithmetic and a little of numerical methods for dummies". This book will help you understand how to write your own libm, and give you some ideas for more advanced tasks, but that's about it.

    For me, who didn't know much of this stuff, it was very interesting. It will probably not save you that course in numerical algorithms (which I for one haven't taken), but even then, it will probably contain some interesting tidbits you didn't know.

    On the other hand, if you have years of experience in writing computer math routines, it will probably quickly become dull, but that's true about anything you already know.

  14. Re:Wow, I'm old, I haven't seen Runge-Kutta in yea by dubious9 · · Score: 5, Insightful

    I won't bash you like some of the other replies to your post, nor will I give you hope that you can advance past a limited set of jobs in the IT industry.

    College (esp for computer engineering and CS) fundamentally teaches you:

    1. How to solve problems

    2. A toolset (ie math, algorithms) to go about solving those problems

    True, you may not ever use calculus, but as a computer scientist you will use matrix theory because it is the best way to solve some problems.

    This is not only for scientific/research either. If you try to write anything performance related, you'll have to use higher math. Computer science ain't easy.

    Let me stress again that college teaches you about your subject matter and how to solve problems for it. You can come up with this stuff by yourself, in my experience only a tiny percent working without a college degree will ever accrue enough to offset what they missed in college.

    --
    Why, o why must the sky fall when I've learned to fly?
  15. Don't click on Slashdots book link by RedWolves2 · · Score: 3, Informative

    Bn.com has this book listed at $49.95. Amazon has it for $34.97

    Save your self some money!

  16. Decimal libraries by Tablizer · · Score: 3, Interesting

    As a biz-app programmer, I am bothered by too much attention given to floating point math and not enough to decimal math. A decimal-centric approach would give better results for monetary calculations, because any truncation and rounding are at decimal (base-10) boundaries instead of base-2 boundaries. It gives results more like one expects doing it by hand on paper, which shapes most peoples' perceptions of what they expect (and the customer is always right, even if they are boneheads).

    The only library I know that supports it is the BC-library sometimes used with PHP. (Well, I guess you could say that COBOL has such also.) It actually uses strings to hold the results so that there is no machine-based limitation on precision size. Plus, that improves its cross-language use since almost everything supports dynamic strings these days.

    (Not the fasted approach I suppose, but most biz apps are not math intensive anyhow. Most code is devoted to comparing strings, codes, and ID's and moving things around from place to place. IBM used to include decimal-friendly operations in its CPU's. Those days seem gone for some reason, yet biz apps are still a huge domain.)

  17. Numerical Recipes by GGardner · · Score: 3, Informative

    FWIW, There's a lot of people out there who don't think too much of numerical recipes: http://math.jpl.nasa.gov/nr/

    1. Re:Numerical Recipes by Fourier · · Score: 3, Insightful

      Interesting read. Still, I would challenge all these numerical specialists to come up with a tome that is equally comprehensive and equally readable by scientists without extensive numerical analysis training. The book has been so successful because it hits the target audience perfectly.

    2. Re:Numerical Recipes by exp(pi*sqrt(163)) · · Score: 3, Informative

      For every algorithm in NR there is a better one published somewhere. But probably the same could be said of any book on algorithms. Also, numerical algorithms people are very opiniated and form distinct camps with different favorite algorithms. But pick up the actual papers where timing and results comparisons are made and you'll often find the tests were made on some standard set of test data that doesn't reflect how you might want to use the algorithm. So although I have many complaints about NR (especially the terrible coding style) I still think it's the best all-rounder.

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
  18. Re:Wow, I'm old, I haven't seen Runge-Kutta in yea by Daniel+Dvorkin · · Score: 3, Insightful

    Your code may do the job, but does it do the job efficiently? And if it didn't, how would you know?

    I changed majors from CS to Mathematics halfway through because I realized that programming is easy; you can always learn a new language or a new technique by picking up the appropriate O'Reilly book on the subject. But writing good programs -- programs that are robust, that scale well, that do as much as possible as quickly as possible -- is really applied math. And math is hard.

    You simply have no idea how much you don't know, and with the attitude you have, you probably never will.

    --
    The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  19. Re:Neglected subject, good review, integer!=assemb by sv0f · · Score: 3, Informative

    A year (or so) ago I attended a lecture given by Guy Steele (of Lisp/Java/ Crunchly fame) on his proposal to alter how IEEE floating point numbers are mapped to real numbers. It quickly flew over my head, but gave a great insight into the whole field.

    Steele is God. He also invented Scheme, wrote the original Common Lisp manual, co-wrote with Harbison a classic reference manual for C, and wrote parallel languages for the Connection Machine.

    On trying to do some "why didn't I get this stuff at college" reading, I found there wasn't a great deal of literature.

    This is widely considered a good introduction.

  20. Math ~= Calculus by jefu · · Score: 5, Insightful
    Many of the responders to this claim loudly and insistently that they've been programming for years and have never used any math. This is one of those perennial topics - I've seen it on the usenet and on web sites more times than I'd like to admit.

    But by "math" the reference is almost always to calculus.

    But math is not just calculus.

    Math includes (and this is a MINIMAL list :

    • algebra Every program using symbols to represent things that might vary is using algebra. Algebra isnt just manipulating big expressions to find values of x and y - it is really about using names to refer to values. (For example x=y+1 is fundamentally an algebraic expression.

      boolean logic Using logical expressions and understanding what they do is just the predicate calculus. Using logic languages (prolog primarily) is, well, logic.

      Linear Algebra Try to program more than minimal graphics without linear algebra.

      The structure of numbers computing square roots and the like. This kind of computing also typically involves calculus and its relatives

      Calculus many parts of computational mathematics, including things like square roots, sin/cos and the like. Also, finding tangents and normals to surfaces which is a big part of reflection models in graphics. The logic involved is also used in the analysis of algorithms.

      logical reasoning Every time someone writes a loop or a recursive function, they are essentially using mathematical induction (albeit informally). Propagation of pre/post conditions (not just in procedure calls, but on the statement to statement level is also logical reasoning (and informal proofs).

      Fourier analysis Fourier analysis is essential in image manipulation (including compression), graphics in general, Most algorithms involving sound processing also rely on fourier analysis

      Graph Theory Where doesn't graph theory show up? Dependency graphs, path algorithms of all sorts. Trees are graphs. Garbage collection involves graph theory. Programs are (on several levels) graphs. The internet as a network is a graph. Websites are graphs (and it can be interesting and revealing to look at them as such).

      Number Theory Cryptography!

    And there's more - check out Glassner's "Digital Image Synthesis", or Knuth's "Art of Computer Programming", - find places where mathematics is not mentioned. Let alone such things as wavelets, the Mandelbrot set, grammars, text (or UI) layout, automata (and on, and on, and on...). I can show you a very hard mathematical problem (which I'm still working on) based on an algorithm you all know, but that is often coded incorrectly.

    If you're not doing any of these things, you may be programming, but you're probably not programming well.

    Juris Hartmanis said (half jokingly) in his Turing Award lecture that "Computer Science is the engineering of mathematics" I think its about as good a definition as any I have ever heard.

  21. Re:Wow, I'm old, I haven't seen Runge-Kutta in yea by Daniel+Dvorkin · · Score: 3, Interesting

    Well, see, I'm a database guy too. I split my day pretty much equally between SQL and PHP. A lot of people may not consider that "real programming." I do, and in fact I've done some pretty heavy-duty scientific application programming in that past, and I'm here to tell you, I use my math skills just as much now as I did then. Because I don't just write queries and interfaces; I write them with absolutely fanatical attention to detail, and I subject everything I put up on my company's server to the kind of rigorous scrutiny I learned in set theory and algorithm analysis classes. And as a result, it works, and it works well, and on the rare occasions that something doesn't work as well as it should, I know how to fix it. The bigger applications get, the less meaningful the 90/10 theory really is -- for very big applications, a whole of bunch of seemingly trivial speed and scalability tweaks add up to big improvements down the road.

    --
    The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  22. Faster Math for Game Programmers. by RGreen · · Score: 3, Informative

    I used this book as one of the references for my Game Developer Conference course on "Faster Math Functions", and the book is good but has holes. Crenshaw's style shows his crusty old engineer roots at times - his coverage of Mininax polynomials is way behind the times and he seriously needs to get into Mathematica or Maple as his basic high-precision tool.
    Work by Tang on combatting destructive cancellation in range reduction, the new semi-table based exponant and log methods, Intel's research into using Estrin's Method based SIMD for evaluating polynomials or Muller's book on Elementary Functions are beyond Crenshaw's experience, and it shows. This is a homebrew book rather than an introduction to the state of the art. More information at SCEA R&D Website.

  23. Jack Crenshaw by Lucas+Membrane · · Score: 3, Informative

    Jack should just about be a household name. When Apollo 13 went berserk, NASA dusted off some calculations of trajectories that he had previously done (he was no longer working for NASA) and used one of them to bring the astronauts back.