Page 12 - Compact Numerical Methods For Computers
P. 12

2                  Compact numerical methods for computers
                            suitable software of all types. including numerical methods. The present work is
                            directed at the user who needs, for whatever reason, to program a numerical method
                            to solve a problem. While software packages and libraries exist to provide for the
                            solution of numerical problems, financial, administrative or other obstacles may
                            render their use impossible or inconvenient. For example, the programming tools
                            available on the chosen computer may not permit the packaged software to be used.
                              Firstly, most machines are controlled by operating systems which control (and
                            sometimes charge for) the usage of memory, storage, and other machine resources. In
                            both compilation (translation of the program into machine code) and execution, a
                            smaller program usually will make smaller demands on resources than a larger one.
                            On top of this, the time of compilation is usually related to the size of the source
                            code.
                              Secondly, once the program begins to execute, there are housekeeping operations
                            which must be taken care of:
                                (i) to keep programs and data belonging to one task or user separate from those
                            belonging to others in a time-sharing environment, and
                                (ii) to access the various parts of the program and data within the set of
                            resources allocated to a single user.
                              Studies conducted some years ago by Dr Maurice Cox of the UK National
                            Physical Laboratory showed that (ii) requires about 90% of the time a computer
                            spends with a typical scientific computation. Only about 10% of the effort goes to
                            actual arithmetic. This mix of activity will vary greatly with the machine and problem
                            under consideration. However, it is not unreasonable that a small program can use
                            simpler structures, such as address maps and decision tables, than a larger routine. It
                            is tempting to suggest that the computer may be able to perform useful work with a
                            small program while deciding what to do with a larger one. Gathering specific
                            evidence to support such conjectures requires the fairly tedious work of benchmark-
                            ing. Moreover, the results of the exercise are only valid as long as the machine,
                            operating system, programming language translators and programs remain
                            unchanged. Where performance is critical, as in the case of real-time computations,
                            for example in air traffic control, then benchmarking will be worthwhile. In other
                            situations, it will suffice that programs operate correctly and sufficiently quickly that
                            the user is not inconvenienced.
                              This book is one of the very few to consider algorithms which have very low
                            storage requirements. The first edition appeared just as programmable calculators
                           and the first microcomputers were beginning to make their presence felt. These
                            brought to the user’s desk a quantum improvement in computational power.
                           Comparisons with the earliest digital computers showed that even a modest micro-
                           computer was more powerful. It should be noted, however, that the programmer did
                            not have to handle all the details of arithmetic and data storage, as on the early
                           computers, thanks to the quick release of programming language translators. There
                           is unfortunately still a need to be vigilant for errors in the floating-point arithmetic
                           and the special function routines. Some aids to such checking are mentioned later in
                           §1.2.
                              Besides the motivation of cost savings or the desire to use an available and
   7   8   9   10   11   12   13   14   15   16   17