>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   1

                             User's Manual for

       *************************************************************
       *  MICROSCOPE: A Software System for Multivariate Analysis  *
       *************************************************************

                                     by

                        Peter Alfeld and Bill Harris

                         Department of Mathematics
                             University of Utah
                               Salt Lake City
                                 Utah 84112

                     Tel.: 801-581-6842 or 801-581-6851

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   2
                                  Abstract

          This  manual  describes  MICROSCOPE:  a portable FORTRAN software
system for the analysis of multivariate functions.  Given an  interpolation
or  approximation  scheme, it allows the following questions, among others,
to   be  answered:    Does  the  scheme  interpolate?    How  often  is  it
differentiable?    What functions does it reproduce exactly?  If the scheme
is polynomial, what is its polynomial degree?  Where is the smoothness of a
function reduced?  Where are the bugs in a FORTRAN implementation?

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   3
                              List of Contents

   0. About This Manual .......................................6

   1. Introduction ............................................8
  1.1 Multivariate Interpolation and Approximation ............8
  1.2 The Basic Approach ......................................9
  1.3 The Alphanumerical Display ..............................13
  1.4 Summary .................................................19

   2. Applications ............................................21
  2.1 Interpolation ...........................................22
  2.2 Smoothness ..............................................27
  2.3 Degree of Precision .....................................28
  2.4 Degree of a Polynomial ..................................30

   3. Using MICROSCOPE ........................................33
  3.1 The MCRSCP Routine ......................................34
  3.2 The Command Mode ........................................36
  3.3 A Discontinuity in the Second Derivative ................38

   4. A Detailed Description of Features and Commands .........44
  4.1 Round-Off Effects .......................................44
  4.2 Derivatives of Step Functions ...........................45
  4.3 The Window ..............................................49
  4.4 Reference Table of Commands .............................51
  4.5 Commands to Control the Display .........................54
  4.6 Commands to Control the Point of Examination ............58
  4.7 Commands to Control the Direction of Investigation ......59
  4.8 Commands to Control Accuracy, the Window,
          and Round-Off Effects ...............................60
  4.9 Commands to Control Execution ...........................62
 4.10 Commands to Obtain On-Line Help .........................64
 4.11 Commands to Keep a Record ...............................65
 4.12 Commands to Analyze Cross Derivatives ...................65
 4.13 Programming MICROSCOPE ..................................67
 4.14 The PLOT command for obtaining a <PLOT79> Display .......69
 4.15 User Intervention .......................................73
 4.16 Default settings ........................................74

   5. Installation Guide ......................................75
  5.1 Description of the Package ..............................75
  5.2 A Key to Selecting the Appropriate Files ................80

  Appendix I: Numerical Differentiation .......................82
           I.1 The Round-Off Threshold ........................85
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   4
           I.2 Round-off versus Truncation Errors .............87
           I.3 Derivatives of Step Functions ..................89
  Appendix II: Organization of MICROSCOPE .....................92
           II.1 Organization of the Program Package ...........92
           II.2 Sampling Scheme and Logic .....................95
           II.3 Common Blocks .................................104
  Appendix III: The Test Package ..............................110
  Appendix IV: Examples for Graphical (<PLOT79>) Displays .....115
  References ..................................................116
  Acknowledgements ............................................117
  Index .......................................................118

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   5
                         List of Tables and Figures

   Figure 1 The Alphanumerical Display ........................14
   Figure 2 Interpolation to Position at Zero..................22
   Figure 3 ...................................................23
   Figure 4 Interpolation at x = 2 ............................24
   Figure 5 Interpolation to the First Derivative .............25
   Figure 6 ...................................................26
   Figure 7 Free End Condition ................................27
   Figure 8 Smoothness at x = 1 ...............................28
   Figure 9 A Zero Error ......................................29
   Figure 10 Round-Off with a Bias ............................30
   Figure 11 A Cubic Function .................................31
   Figure 12 ..................................................32
   Figure 13 ..................................................38
   Figure 14 ..................................................39
   Figure 15 ..................................................40
   Figure 16 ..................................................41
   Figure 17 ..................................................42
   Figure 18 At the limits of resolution ......................43
   Figure 19 Derivatives of a Step Function ...................46
                               0
   Figure 20 Derivatives of a C  Function .....................47
                               1
   Figure 21 Derivatives of a C  Function .....................47
                               2
   Figure 22 Derivatives of a C  Function .....................48
                               3
   Figure 23 Derivatives of a C  Function .....................48
                               4
   Figure 24 Derivatives of a C  Function .....................49
   Figure 25 An Invisible graph ...............................56
   Figure 26 The Disentangled Graphs ..........................57
   Figure 27 An Extended Discontinuity ........................67
   Figure 28 A 3/2 times differentiable function ..............113
   Figure 29 Another 3/2 times differentiable function ........114

   Table: Efficiency of Window Widths .........................50
   Quick Reference Table of Commands ..........................52
   Table of Discretization Controling Commands ................60
   Table: Relative Efforts ....................................62
   Table 1: Constants for Differentiation Formulas ............84
   Table 2: Threshold Values of h .............................86
   Table 3: Optimum Values of h ...............................88
   Table 4: The Superiority of Testing Higher Derivatives .....91
   Epitome Flowchart ..........................................94
   Outline of SGAMMA ..........................................104
   Table of Test Parameters ...................................112

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   6
                            0. About This Manual

          This    manual   constitutes  the  comprehensive  description  of
MICROSCOPE, its operation, applications, foundations, and inner workings.

          Section 1.1 describes what kind of problems can be  addressed  by
MICROSCOPE.    Section 1.2 describes the basic approach and is fundamental.
Section 1.3 describes the alphanumerical screen display and is  needed  for
understanding  the  examples  given  throughout  this  manual.    It   also
introduces some  terms  and  concepts  and  serves  as  a  prelude  to  the
capabilities of MICROSCOPE.

          Section 2 gives examples that illustrate four major  applications
(interpolation,  smoothness,  degree  of precision, and polynomial degree).
These do of course not exhaust the potential of MICROSCOPE.  In section  3,
one  other  application  (discovery  or  identification  of  a  point where
smoothness is reduced) is used as a vehicle for introducing  the  mechanics
of using MICROSCOPE.

          Section 4 gives  a  detailed  description  of  all  commands  and
features,  organized  by  type  of  feature or task to be accomplished.  In
regular use, this will probably be the most frequently consulted section.

          In  reading  sections  2  and  3,  it is desirable that a working
version of MICROSCOPE is available so  that  hands  on  experience  can  be
gained.   If this is not the case the installation guide (section 5) should
be consulted first.  That section also contains a  detailed  discussion  of
the portability features and possible variants of MICROSCOPE.

          Appendices are included that describe some technical features  in
detail:    the  differentiation  formulas,  the organization of the program
package, and the test package.    There  should  also  be  an  appendix  IV
containing pen plots corresponding to the cruder alphanumerical graphics in
the body of the manual.  However, that appendix is not machine legible, and
is distributed separately.

          The manual itself is in machine readable form so that it  can  be
distributed  together with the package and can be printed locally, and read
on line using for example the search features of a text  editor.    It  was
generated  by  a  MICROSCOPE  program,  with  the  text of the manual being
"notes" and the example screen displays being computed  by  MICROSCOPE  and
automatically  embedded  into  the text.  (Actually, the MICROSCOPE program
generated a data file that was then fed into the  text  formatting  program
DOCUMENT,  see  Beebe, 1980.) Machine legibility, however, accounts for the
somewhat awkward notation in some places.  For example, greek letters  have
been given abbreviations in terms of roman letters.

          Definitions are denoted by writing the  defined  term  in  single

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   7
quotation marks.  Ordinary quotations are in double quotation marks.

          The examples in this manual are reproducible  since  the  set  of
routines  used for their generation is supplied with the package and can be
used for test purposes.   To  ensure  uniformity  of  results  obtained  on
different machines, a facility has been added to simulate rounding, and all
examples have been computed in 10 digits arithmetic.  More precisely, if  x
is the quantity to be rounded to D digits, say, then x is replaced by

                                     -D             -D
                      z := (1+eps *10  )*x + eps *10
                                 1              2

where eps  and eps  are random numbers between -1 and +1.  The addition  of
         1        2
the  eps   term  is  not  standard  but appropriate in the present context,
        2
because in investigations with MICROSCOPE small numbers are  often  due  to
taking  differences  between  very  close  large  numbers,  leading  to   a
cancellation of significant digits.  The larger the  magnitude  of  x,  the
more  insignificant  the  second  term  will  become.  If x is roughly 1 or
larger (in  magnitude)  our  rounding  is  essentially  equivalent  to  the
standard rounding (where eps  = 0).
                            2

          This manual will rarely be read sequentially from front to  back.
Therefore,  key ideas and concepts have sometimes been restated if they are
crucial in the given context.   It  is  hoped  that  this  redundancy  will
contribute to the usefulness of this document.

          Any crticisms, comments  and  suggestions  about  MICROSCOPE  are
welcome  and should be directed to Peter Alfeld, Department of Mathematics,
University of Utah, Salt Lake City,  Utah  84112,  801-581-6842.    We  are
particularly  interested  in  any  applications  of MICROSCOPE that are not
described in this manual.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   8
                              1. Introduction

             1.1  Multivariate Interpolation and Approximation

          This  manual  describes  a  FORTRAN software package, MICROSCOPE,
whose main applications  are  in  the  analysis  of  functions  of  several
variables  (or  'surfaces')  as  they  occur  e.g.  in the approximation of
multivariate data or in the design of geometric objects such as the body of
an  automobile  or  an  aircraft.  This is a currently very active research
area with many unsolved and difficult problems.  For a survey see Barnhill,
1983, and the references quoted therein.

          MICROSCOPE is portable to the extent that it has passed the PFORT
verifier  (Ryder,  1974)  with  the exception that it uses some non-FORTRAN
characters (namely ?,<,>,!,:,;).  Some non-portable optional  features  are
supported  by  variants  of  the code.  These include the use of lower case
letters   in  Input  and  Output,  and  the  use  of  modifications  of  an
alphanumerical display on a CRT terminal.  If the software (<PLOT79>, Beebe
1979) and hardware are available more sophisticated and pleasing  graphical
displays  can  also  be  obtained.  However, even if none of the additional
features are provided by a particular installation, a working, if  somewhat
crude,  version  of  MICROSCOPE  can  be constructed.  See the installation
guide (section 5) for details.

          The  objects  that can be examined by MICROSCOPE are functions of
from one to three  independent  variables.    Allowing  only  up  to  three
variables enabled us to contain all numerical information on the CRT screen
and proved sufficent for all cases we have encountered.  If a  function  of
more  than  three variables must be examined MICROSCOPE can be applied to a
suitable restriction of the function to a subdomain of  dimension  at  most
three.    If  there  is  sufficent  interest, future versions of MICROSCOPE
capable of handling more than three variables will be provided.

          The  functions  of  interest  are usually obtained by applying an
interpolation or approximation scheme  to  discrete  or  transfinite  (i.e.
infinitely  many)  data.    As far as the use of MICROSCOPE is concerned it
matters little if a function is obtained by interpolation or  approximation
(except  that  one  will  not  need to test for interpolation in the latter
case), so we will use the two terms interchangeably.

          We  will  refer  to  the  function  that is being examined as the
'trial    function'.    The  trial  function  may  be  different  from  the
interpolating  or  approximating  function  in  which  the  final user of a
numerical scheme is interested.    For  example,  it  is  often  useful  to
generate  data  from  a  'primitive  function'  and then use the difference
between the primitive function and its interpolant as the  trial  function.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page   9
This  makes discontinuities in derivatives large relative to the derivative
value and thereby amplifies discontinuities  which  are  then  more  easily
detected.

          Four types of questions occur most frequently in the analysis  of
the trial function:

          -1-   Does the scheme interpolate?

          -2-   How  often  is  the  trial  function differentiable?  (I.e.
what is its 'degree of smoothness'?)

Note:Throughout  almost  all of this manual we will consider only functions
     that possess a step discontinuity in some derivative, for this is  the
     type  of  smoothness  limitation  that    occurs    in    multivariate
     interpolation    and    approximation.   There  are  of  course  other
                                                             4/3
     possibilities.  For  example,  the  function  f(x)  =  x     is   once
     differentiable but its second derivative exhibits a pole rather than a
     step.  The  test  package  (see appendix III) can be used to gain some
     experience  with  such  functions.  In  particular,  the  examples  in
     appendix III show how to identify and distinguish cusps and poles.

          -3-   Which functions are reproduced exactly by the scheme?    In
particular,  which  is  the  maximum degree up to which all polynomials are
reproduced exactly?  In other words, what is the  'degree  of  (polynomial)
precision' of the scheme?

          -4-   If the trial function (or  some  of  its  derivatives)  are
polynomial what is their degree?

          It should be obvious that only in  the  very  simplest  of  cases
answers  to  these  questions  can  be obtained from a plain display of the
surface of interest.  Even given infinite  display  accuracy  (although  of
course  any  physical  display  is  ultimately  piecewise  linear  or  even
discrete),    it    seems   impossible  to  distinguish  optically  a  once
differentiable function from one that is twice differentiable.

                          1.2  The Basic Approach

          In the design of an approximation scheme one  usually  knows  the
'critical  sets' where the phenomena of interest such as discontinuities in
derivatives, or interpolation to certain data, may occur.  For example,  in
a  bivariate interpolation scheme defined on a triangulation, critical sets
are usually edges of triangles, possibly internal edges,  and  vertices  of
triangles.    In  a  trivariate  scheme  defined  on  a  tesselation   into
tetrahedra, critical sets are faces, edges, maybe internal faces and edges,

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  10
and  internal  and  external vertices.  If the critical set is not known it
can be discovered with MICROSCOPE (see section 3), but for the  present  we
will assume it is known.

          The basic idea of MICROSCOPE is very simple:  Pick a random point
(the  'point of examination') in a specific critical set.  We will refer to
that set as 'the front'.  Then determine a 'direction of investigation' and
consider  a  line  through  the  point  of  examination in the direction of
investigation.  This is the 'line of investigation'.   Depending  upon  the
application, the line of investigation may be contained in the front, or it
may be at an angle (not necessarily a right one) to it.  We will  call  any
derivative  in  the  direction  of investigation a 'tangential derivative'.
Any    pure   derivative  in  a  direction  other  than  the  direction  of
investigation  is  a  'cross  derivative'  and  its direction is the 'cross
direction'.  MICROSCOPE numerically approximates the  relevant  derivatives
(pure  or  mixed)  and  displays  the  approximations  on the CRT terminal.
Depending on the resulting picture, one may then take further action,  e.g.
pick  another  point  of examination or another direction of investigation,
consider other derivatives, or improve the existing plot  by  altering  the
underlying numerical parameters.

          In using MICROSCOPE it is  important  to  choose  the  underlying
domain  and  the  primitive  function  so  as to avoid artifacts due to the
regularity of the domain or peculiarities of the primitive function, and to
pick  the points of examination randomly or arbitrarily within the critical
sets.  Usually different types of critical sets  will  be  present  and  of
course one will need to consider at least one representative of each set.

          Numerical    differentiation  is  a  notoriously  ill-conditioned
numerical  process.    However,  in MICROSCOPE, the appearance of round-off
errors is immediately apparent because the  points  on  the  graph  of  the
relevant  derivative  are  scattered across the screen in a random fashion.
Moreover,    by  plotting  derivatives  of  a  high  degree  with  a  large
discretization  parameter  the  limitations imposed by round-off errors can
usually be overcome.  For example,  if  the  expected  discontinuity  in  a
specific derivative is too unpronounced to be visible at the large value of
the discretization parameter necessitated by round-off errors, then  higher
order  derivatives  can  be  computed  (on an even coarser discretization).
These   will  be  approximations  of  the  Dirac  Delta  function  and  its
derivatives, and usually will pinpoint even weak discontinuities.

          Numerically, we proceed as follows.    Let  F  denote  the  trial
function, P the point of examination, and d the direction of investigation.
MICROSCOPE displays derivatives of F in the direction of d along  the  line
of investigation with P being the center point.  A built-in facility allows
the replacement of F with a derivative of F  in  some  other,  independent,
direction.    More  complicated  mixed  partial derivatives can be built by
modifying the trial function, and MICROSCOPE offers some help with that  as
well.    However,  for  the  present  we  will  restrict our attention to a
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  11
tangential derivative of F.

          The directional derivatives are approximated at points

             P(i) = P + i*s*d, where i = -N, -N+1, ...., N-1,N

and the quantity s > 0 determines the spacing of the points.   It  will  be
refered to as the 'display interval' or 'interval' for short.  The number N
determines the resolution of the display (as well as the numerical effort).
At  each  point  P(i),  we  approximate  the  k-th  derivative  of F in the
                                             (k)
direction d at the i-th point by a quantity Q   .
                                             i

          The  range of k in the present version of MICROSCOPE is from zero
to six.  We have found this sufficient for all of our  applications.    The
             (k)
quantities  Q     are  determined  by  numerical  differentiation (i.e.  by
             i
differentiating an interpolating polynomial).  The formulas,  given  below,
were determined by the following criteria:

          -1-   Central Differences should be employed in  order  to  avoid
artifact due to asymmetry.

          -2-   The discretization parameter (which  does  not  necessarily
equal s) should be such that the number of points affected by the suspected
discontinuity (in some derivative) is  independent  of  the  order  of  the
derivative.

          -3-   Other than the  above,  the  degree  of  the  interpolating
polynomial should be as low as possible.

          Furthermore, we picked discretization formulas that use points at
equally  spaced  intervals.    This  may  be  changed in future versions of
MICROSCOPE.

          Denoting  the  'discretization  parameter'  by  h  > 0, the above
criteria give rise to the following formulas:

           (0)
          Q    = F5
           i

           (1)
          Q    = (-F1 + F9)/(2*h)
           i

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  12
           (2)                    2
          Q    = (F1 - 2F5 + F9)/h
           i

           (3)                             3
          Q    = 4*(-F1 + 2F3 - 2F7 + F9)/h
           i

           (4)                                   4
          Q    = 16*(F1 - 4F3 + 6F5 - 4F7 + F9)/h
           i

           (5)                                             5
          Q    = 243*(-F1 + 4F2 - 5F4 + 5F6 - 4F8 + F9)/(2h )
           i

           (6)                                                    6
          Q    = 729*(F1 - 6F2 + 15F4 - -20F5 + 15F6 - 6F8 + F9)/h
           i

where

          F1 = F(P(i) - hd)

                        2hd
          F2 = F(P(i) - ---)
                         3

                        hd
          F3 = F(P(i) - --)
                        2

                        hd
          F4 = F(P(i) - --)
                        3

          F5 = F(P(i))

                        hd
          F6 = F(P(i) + --)
                        3

                        hd
          F7 = F(P(i) + --)
                        2

                        2hd
          F8 = F(P(i) + ---)
                         3

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  13
          F9 = F(P(i) + hd)

          The first four of the above formulas can be found  in  Abramowitz
and  Stegun,  1968,  p.    914,  and  the  last  two  can be derived by the
techniques described there.  Higher order formulas can of  course  also  be
derived.

                                          (k)
          It is interesting to note that Q    considered as a function of x
                                          i
(or  a function of a continuously varying parameter i) is a function of the
same degree of smoothness as the trial function itself.  Just the number of
points of reduced smoothness is increased, there being one corresponding to
each point in the differentiation formula  passing  through  the  point  of
reduced  smoothness.  Thus numerical differentiation can be thought of as a
smoothing process.  (This contrasts starkly with its numerical property  of
a  roughing procedure due to round-off effects.) The figures in section 4.2
illustrate the smoothing properties of numerical differentiation.

          For  a  more  detailed discussion of the truncation and round-off
properties of these formulas see Appendix I.

                       1.3 The Alphanumerical Display

          In  this  subsection, the alphanumerical screen display generated
by MICROSCOPE is described in detail.  The purpose of  the  description  is
twofold:    First,  it  is  necessary  for an understanding of the examples
sprinkled throughout this manual.  Second, however, it also  serves  as  an
illustration  of  some  of  the  capabilities  of MICROSCOPE and as a first
introduction to the power and versatility of the package.

          During  a  MICROSCOPE  session  the  CRT  screen  will usually be
occupied by the  'alphanumerical  display'  like  the  one  illustrated  in
figure 1.  (More sophisticated graphical displays can also be obtained, see
sections 4.14 and 5.)

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  14
222                            I     :   **********************************
 . 22                          I     :  *  I                          22 .
  .  222                       I     : *   I                       222  .
   .    22                     I     :     I                     22    .
    .     22                   I     :     I                   22     .
     .      222                I     :*    I                222      .
      ..       22              I     :     I              22       ..
7654321..876543212287654321.987654321+123456789.123456782212345678..1234567
         .         222         I     :     I         222         .
          ..          22       I    *:     I       22          ..
            ..          22     I     :     I     22          ..
              ..          222  I     :     I  222          ..
                ...          22I   * :     I22          ...
                   ....        22 *  :    22        ....
**********************************22222222..........
===========================================================================
CD: deg =  1 dir = (  0.000000D+00,  1.000000D+00) ch  =   6.0000D-04
Point            = (  0.000000D+00,  1.000000D+00)  s  =   5.0000D-03
Direction        = (  1.000000D+00,  0.000000D+00)  h  =   3.0000D-02
F0 ( 9.39D-09, 1.27D-02) F2 ( 1.20D-01, 2.22D+00) F3 (-1.20D+01, 1.21D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     174

            Figure 1 Demonstration of the Alphanumerical Display

                                                              2
          In  this  example,  the trial function is f(x,y) = x *y*abs(x*y).
We analyze a cross derivative of it in the direction (0,1).  The  direction
of  investigation is (1,0), and the point of examination is (0,1).  Because
of the absolute value term, the cross derivative is  twice  but  not  three
times tangentially differentiable at the point of examination.

          We explain the display starting at the top and referring to lines
either by their position or by the first word contained in them.

          The display is naturally divided into two parts:   The  first  15
lines  constitute the 'graphical display', and lines 17 through 21 form the
'numerical display'.  Line 16 separates the two  displays  and  is  present
only if there is sufficient space available.

                        -1-   The Graphical Display

          Every MICROSCOPE display shows the graphs of a set of  tangential
derivatives  of  degrees  between  0  and  6.    The function that is being
differentiated tangentially is called the 'display function'.   It  may  be
the  trial  function  itself (the most frequently occuring case), or, as in
this example, a pure cross derivative of a degree between 1 and 6.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  15
          Distance along the horizontal axis corresponds to displacement in
the direction  of  investigation  from  the  point  of  examination  (which
corresponds  to the center of the horizontal axis).  The scale on that axis
has the same meaning for all graphs shown.  The vertical  axis  corresponds
to  function  values,  but  the  vertical  scale  is  different  for   each
derivative, and is chosen such that the graph  fills  the  entire  vertical
extent  of  the  graphical  display.  This normalization is carried out and
modified automatically as the investigation proceeds.  A period denotes the
graph  of  the display function, and the digit k, say, where k is between 1
and 6 and denotes the k-th tangential derivative.   In  this  example,  the
display  function and its second and third tangential derivatives are being
shown.

          Sometimes  some  derivative  is more interesting than others, and
then it may be useful to accentuate  it  with  asterisks.    In  the  above
example,  the  third derivative has been so emphasized.  Usually, the graph
of a given derivative overwrites the graph of any lower  order  derivative.
However,  the  graph  of  an  accentuated  derivative  overwrites all other
graphs.

          Both the number of lines and the number of columns in the display
can be set according to specific purposes.  Throughout this manual we  will
use 75 columns and 15 rows for the graphical display as this is appropriate
for the width of the printed output.  A width of 79 might be preferable for
a  standard  CRT  terminal  displaying 80 columns; 135 columns and a larger
number of rows might be used for printed output; and a  smaller  number  is
sometimes  useful for preliminary investigations when the trial function is
expensive to evaluate.  An even number of columns is  normally  undesirable
because then the point of examination does not lie in the precise center of
the display.

          Line  8  in the example contains a horizontal scale counting from
the center to the left and right.  This will usually be omitted so  as  not
to  clutter  the display, but it is sometimes useful for the identification
of points of interest.  The distance from the center can be used to inquire
about  numerical  values of certain derivatives, or to shift the graph left
or right as required by the circumstances.  The scale can be turned  on  or
off,  or  replaced  with  a  line  of  hyphens.   The graph of any function
overwrites the horizontal scale.  The center of the display can  optionally
be  marked  with a "+" sign.  This is sometimes useful to pinpoint symmetry
properties.  In the above example the graph of the third derivative  passes
through the center of the display.  The center mark overwrites the graph of
any function passing through it.

          The  central  column  of colons marks the column corresponding to
the point of examination.  The two columns of  I's  outline  'the  window',
i.e.  that set of points at which the numerical differentiation is affected
by the behavior of the trial function at the point of examination.    (This
is not always quite true when cross derivatives are being examined, see the
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  16
discussion in section 4.11).  For every point in the window,  the  interval
about  the  point spanned by the differentiation stencil contains the point
of examination.  The differentiation formulas  are  chosen  such  that  the
window  is  identical  for  all tangential derivatives.  Obviously, for the
display function itself the window contains only the point of  examination.
For  its derivatives, the window contains all points that can be written as
P + td, where abs(t) does not exceed the value of h/s, (and, as  before,  P
is  the point of examination, d is the direction of investigation, h is the
discretization parameter, and s is the interval).  We define w:=2*h/s to be
the  'window  width'.    Obviously,  by picking the window width < 1, it is
possible to generate displays in which the  only  point  contained  in  the
window  is P itself.  However, for several reasons it is usually preferable
to use a larger window width.  This aspect is discussed in more  detail  in
section  4.1.    The  default  value  of  the window width is 12, as in the
example, but this can be changed as needed.

          Without  examining the numerical display, it is apparent from the
graphical display that some function is being investigated  that  is  twice
but not three times differentiable since the (accentuated) third derivative
shows a clear step discontinuity.  Note how that step is smeared  out  over
the window.

                         -2-  The numerical display

          The first line of  the  numerical  display  starting  with  "CD:"
indicates  that  the  derivatives  are  mixed  partials,  i.e.    they  are
tangential derivatives of a cross derivative (of the trial function).  This
line is absent if the trial function itself is being examined, and the line
carries only information that is pertinent to the cross derivative.  In the
present example, the degree of the cross derivative ("deg") is 1, the cross
direction is (0,1), and the discretization parameter used for computing the
derivative  (denoted  by  "ch"  corresponding  to  "h"  for  the tangential
derivative) is 6D-4.  The formulas  for  computing  cross  derivatives  are
equivalent to those for computing tangential derivatives.

          The line starting with "Point" describes the point of examination
(which  is  (0,1))  and the interval (which is 5D-3).  This display implies
that the trial function is bivariate.  Appropriate modifications take place
for functions of 1 or 3 variables.  The next line starting with "direction"
describes   the  direction  of  investigation  (which  is  (1,0))  and  the
discretization  parameter (which is 3D-2).  Notice that the window width is
2h/s = 12 which is consistent with the graphical display

          The "Point" and "Direction" descriptions are always present.

          The next line, starting  with  "F0",  gives  the  ranges  of  the
displayed  derivatives.   Ranges are labeled Fk where k is the order of the
tangential derivative.  For example, F2 corresponds to  the  range  of  the
second  (tangential)  derivative  (of a first order cross derivative) which

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  17
here is (0.12,2.1).  If more functions (up to seven)  are  displayed,  then
their  ranges  are  also  given,  adding  up  to two lines to the numerical
display as necessary.

          The next and last line, starting with "I/O", contains information
about the present configuration of MICROSCOPE.

          The  10  integers following "I/O" are the FORTRAN channel numbers
as they are employed by MICROSCOPE at the display time.  They correspond to
the following:

          -1-   'Input Device' (here 25),  i.e.    the  device  from  which
commands  are  read.    In an interactive session, this will usually be the
terminal.  But it may also be a file of MICROSCOPE commands that generate a
specific setup, or a documentation like this manual.

          -2-   'Output Device' (here 6), i.e.  the  device  receiving  the
command  prompts  and any help information.  Usually, this will also be the
terminal, or, if MICROSCOPE is being driven by commands in a file,  it  may
be a Null or Dummy device.

          -3-   'Graphics Device' (here also 6), i.e.  the device receiving
the  alphanumerical  display  illustrated  in  figure  1.   This will again
usually be the terminal, but it may also be a separate display device or  a
file receiving information for subsequent printing.

          -4-   'Help Device' (here 1), i.e.   the  device  containing  the
MICROSCOPE  help  file, which is supplied with the package.  MICROSCOPE has
several interactive help facilities and the information needed for  running
them is read out of this file when MICROSCOPE is first called.  Usually you
will not be concerned with precisely where  MICROSCOPE  receives  its  help
information.  However, the channel number is printed in the display to help
prevent an accidental overwrite of the help file.

          -5-   'Recording  Device'  (here  2),  a  device that can receive
selected information from the MICROSCOPE  session,  e.g.    copies  of  the
screen  display  or  'notes' that explain the displays.  This manual is the
result of reading a set of instructions, i.e.  a MICROSCOPE 'program'  from
the  Input Device (a data file), processing it and writing the results onto
the Recording Device.

          -6-   'Restart  Device'  (here 3).  At any time during a session,
the current configuration of MICROSCOPE can  be  saved,  allowing  a  later
restart from the current status of the investigation.  This is accomplished
by writing the values of all relevant variables into a file pointed  at  by
the Restart device.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  18
          -7-   'Logging Device' (here 27).  It is possible to keep a diary
of  th  MICROSCOPE session listing the commands and data entered as well as
th results effected by them.  This feature  is  activated  by  setting  the
Logging Device number to a non-zero value.

          -8-   'Point Loading Device' (here 28).  A device allowing you to
read points from a file, rather than having to type them in.

          -9-   'Direction Loading Device' (here 29).  Similar to  -8-  for
loading the direction of investigation.

          -10-  'Cross Direction Loading Device' (here 30).  Similar to -8-
for loading the cross direction.

          The first six I/O channel numbers are parameters  of  the  master
MICROSCOPE  routine  (see  section  3.1)  and  can each be changed during a
session.  The last four channels are zero (i.e.  unused)  by  default,  and
can  be  set to non-zero (i.e.  active) values during a MICROSCOPE session.
It is of course unnecessary to have all  channel  numbers  distinct.    For
example,  all  three  loading  devices might be identical, allowing for the
possibility of having just  one  list  of  points,  directions,  and  cross
directions.

          Following the device numbers is a flag "NRML on"  or  "NRML  off"
(here  on),  indicating whether the direction of investigation entered into
MICROSCOPE has been normalized or not.  The "Direction" line  always  gives
the  direction  as  entered  by the user.  If NRML is off, the direction of
investigation, d, is identical to that printed in the display, otherwise it
is  that  printed  in the display normalized to have unit Euclidean length.
With   the  normalization  on,  tangential  derivatives  are  the  standard
directional  derivatives  as  they are defined in Calculus Textbooks.  With
the normalization off, they are the more versatile Gateaux  derivatives  as
they  are  used frequently in multivariate interpolation and approximation.
The NRML flag applies similarly to the cross direction.

          Following  the  NRML  flag is the word "current".  This indicates
that the numerical display corresponds to the graphics display.  To explain
why  this  might not be so requires a brief excursion into the Organization
of MICROSCOPE.  When drastic parameter changes are taking place it is often
more  efficient  to  accumulate  them  before  generating  the new display.
Usually in that case the alphanumerical display is scrolled while  commands
are  being  given,  and vanishes from the screen.  However, sometimes it is
preferable to view the old display rather than the commands given  so  far.
In  that  case,  the  display  can  be recalled on the screen, and the word
"current" is replaced by "GO pndg" (i.e.  the GO command needs to be  given
to  incorporate  into  the graphical display changes of parameters that may
already be shown in the numerical display).

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  19
          The  last item in the last line is "CALLS = 174" where 174 is the
number of evaluations of the trial function expended up to  this  point  in
the  MICROSCOPE  session.   This allows monitoring the computational effort
spent.  A typical multivariate surface will be expensive to  evaluate,  and
its  cost  will usually dominate the cost of running MICROSCOPE and thereby
determine how long you have to  wait  for  a  reponse  from  the  terminal.
Therefore,  a  significant  effort  has  been  made  to  keep the number of
necessary function evaluations small.  This feature contributes in no small
measure  to  the  complexity  of  the  MICROSCOPE source code.  The example
display has 75 columns and we are examining a first order cross  derivative
of  the  trial  function.  Each evaluation of the cross derivative requires
two evaluations of the trial function.  Displaying the graph of  the  cross
derivative  alone  would  therefore  require  a  value  of  CALLS  equal to
2*75 = 150.  Note that  computing  and  displaying  the  second  and  third
tangential  derivatives  of  the  cross  derivative  requires an additional
effort of only 16%.  This  is  not  a  trivial  accomplishment  as  may  be
suggested  by  the  fact  that the same display with the slightly different
window width  of  10  would  require  330  evaluations.    For  a  detailed
discussion  of  the  numerical effort associated with various window widths
see section 4.3.

          Notice  that  in  the  above  example  we  identified   a    step
discontinuity in a mixed partial derivative of fourth order (a third  order
tangential  derivative  of  a first order cross derivative) without fuss or
doubt.  If this was a real  investigation  we  could  state  now  that  the
underlying scheme in any case is at most three times differentiable.

                                1.4 Summary

          With MICROSCOPE, one answers questions like those in section  1.1
for  specific examples.  Thus only negative results (e.g.  that a scheme is
not differentiable) can be proved strictly.  However, positive results  can
also  be  obtained.    If  the  examples  are  chosen  carefully to exclude
artifacts and make them representative, our program allows for  answers  to
the  above questions with a degree of confidence that borders on certainty!
Naturally, a computational approach does  not  replace  a  rigorous  proof.
However,  in  the  authors  experience  it is often possible to confirm (or
shatter) fuzzy notions with MICROSCOPE, and  to  generate  further  insight
into the phenomena under consideration.  Encouraging MICROSCOPE results may
help in building up the stamina needed for attempting a rigorous proof, and
detailed  investigations  may  help in providing ideas for carrying out the
analysis.

          Often,  of course, MICROSCOPE will be employed in hindsight, when
the analyst already knows the answers to  questions  like  the  above  from
theoretical  reasoning.    The  examination  with MICROSCOPE then serves to
corroborate    the   reasoning,  and  also,  more  mundanely  but  no  less
importantly, to eliminate bugs in the implementation.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  20

          In the authors experience,  MICROSCOPE  proved  invaluable  as  a
debugging  tool, often pinpointing within narrow limits that part of a code
that was at fault, but also sometimes uncovering flaws in  the  theoretical
approach, and, on a few exhilarating occasions, leading to the discovery of
new and unlooked for results that could then be proved theoretically.  Thus
MICROSCOPE  is  useful in the identification as well as in the verification
of results.

          In  the development of MICROSCOPE we were occasionally confronted
with the objection that our alphanumerical displays are rather crude.   Our
primary response to this is that the very purpose of MICROSCOPE consists of
translating very subtle properties into displays that make  them  glaringly
apparent.   A large part of our interest centers around step functions, and
it seems fair to display them as such.  Indeed,  any  curve  fitting  might
disguise  the  very  features  in  which we are interested.  However, we do
provide an interface to a sophisticated graphics  package.    See  sections
4.14 and 5 for more information.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  21
                              2. Applications

          In    this  section,  we  illustrate  the  main  applications  of
MICROSCOPE.    Consider  the simple example of interpolating to a primitive
function p by a cubic spline S, say, according to the conditions:

                          2       3
   S(x) = a0 + a1*x + a2*x  + a3*x       if x < 1
and
                          2       3
   S(x) = b0 + b1*x + b2*x  + b3*x       otherwise

where the coefficients are defined by

       S(0) = p(0), S(1) = p(1), S(2) = p(2), S'(2) = p'(2), S"(0) = 0

and S is twice differentiable at x = 1.  Thus we require  interpolation  to
'position' (i.e.  function values) at 0,1,2, and interpolation to the first
derivative at 2 by a piecewise cubic function that  is  twice  continuously
differentiable.    At  0  we  impose  additionally  a "free end" condition.
(There is an extensive literature on Splines, see e.g.  de Boor,  1978,  or
Schumaker, 1981)

          For our present purposes we assume that p(x) is the  exponential,
i.e.

                                         x
                                 p(x) = e

where e is the base of the natural logarithm.  This function appears to  be
sufficiently non-polynomial to avoid the introduction of artifacts.

          A simple calculation shows that

          a0 = 1
                    2
          a1 = (-2*e +12*e-9)/7

          a2 = 0
                   2
          a3 = (2*e -5*e+2)/7

          and
                   2
          b0 = (5*e -16*e+12)/7
                     2
          b1 = (-17*e +60*e-24)/7

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  22
                    2
          b2 = (15*e -48*e+15)/7
                    2
          b3 = (-3*e +11*e-3)/7

          In the following examples we will verify that S  with  the  above
coefficients does indeed possess the required properties.

                             2.1  Interpolation

          The  basic  idea  of  verifying  interpolation  is  to  plot  the
difference between the primitive function and its interpolant, and to check
that the error and its appropriate derivatives are  indeed  zero.    So  we
incorporate  the  exponential  and  S as defined above into MICROSCOPE (see
section 3.1 for details), and start an interactive session.   After  giving
the  appropriate  commands we obtain the following picture illustrating the
situation at x = 0:

...                            I     :     I
   ...                         I     :     I
      ....                     I     :     I
          ...                  I     :     I
             ...               I     :     I
                ....           I     :     I
                    ....       I     :     I
                        ....   I     +     I
                            .....    :     I
                               I .....     I
                               I     :.....I
                               I     :     ......
                               I     :     I     .......
                               I     :     I            .........
                               I     :     I                     ..........
===========================================================================
Point            =    0.000000D+00  s  =   5.0000D-03
Direction        =    1.000000D+00  h  =   3.0000D-02
F0 (-3.33D-02, 6.76D-02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     249

                 Figure 2 Interpolation to Position at Zero

          We  notice that the range of the error is from -0.0333 to 0.0676.
Since the graph of the error function  passes  through  the  vertical  axis
slightly  below  the  center, this range is consistent with the error being
zero, i.e.  with interpolation.    A  more  reliable  confirmation  can  be
obtained  by  asking  for the value of the displayed function at the center
(i.e.  0) of the display.  This procedure, which is not shown here,  yields
a  value of -9.4D-11, which is zero up to round-off errors.  (If you try to
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  23
reproduce this example with your own version of MICROSCOPE you  may  get  a
slightly  different  result  because  of  the  random  nature  of round-off
errors.) An alternative approach consists  of  halving  the  interval,  and
thereby  decreasing  the  range  covered  by  the  graph.  In the numerical
display the range should shrink correspondingly, maintaining the  value  of
zero in its interior.  Halving the interval yields the display:

....                           I     :     I
    ....                       I     :     I
        ....                   I     :     I
            ....               I     :     I
                ....           I     :     I
                    .....      I     :     I
                         ....  I     :     I
                             .....   +     I
                               I  .....    I
                               I     : .....
                               I     :     I.....
                               I     :     I     ......
                               I     :     I           ......
                               I     :     I                 .......
                               I     :     I                        .......
===========================================================================
Point            =    0.000000D+00  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 (-2.03D-02, 2.88D-02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     287

                                  Figure 3

          The range of the error has been reduced to from -0.0203 to 0.0288
and  a  zero  value  of  the  error  at  the  point of examination is still
consistent with the graphical display.  This procedure  can  be  continued.
Proceeding  similarly  at  the point x = 1 yields a similar result, and you
might try this for yourself.  At the point x = 2, however,  we  obtain  the
display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  24
                               I     :     I                             ..
                               I     :     I                            .
                               I     :     I                           .
                               I     :     I                          .
                               I     :     I                        ..
                               I     :     I                       .
                               I     :     I                     ..
..                             I     +     I                    .
  ...                          I     :     I                  ..
     ....                      I     :     I                ..
         ...                   I     :     I              ..
            ....               I     :     I           ...
                .....          I     :     I        ...
                     .....     I     :     I    ....
                          ......................
===========================================================================
Point            =    2.000000D+00  s  =   5.0000D-03
Direction        =    1.000000D+00  h  =   3.0000D-02
F0 ( 2.64D-11, 1.42D-02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     362

                      Figure 4 Interpolation at x = 2

          The graph of the error function touches, but does not cross,  the
x  axis, which is consistent with our interpolating to the first derivative
as well as position.  The value of the error at  the  center  can  be  read
directly from the numerical display and is -2.4D-11 (you may get a slightly
different value because of the random round-off  errors).    This  confirms
interpolation  to  position.    Interpolation  to  the derivative is likely
because  the  graph  appears  to  have  a  horizontal  tangent.    However,
confidence  can be raised by computing the first derivative of the error as
well, yielding the display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  25
                               I     :     I                            111
                               I     :     I                          11.
                               I     :     I                       111 .
                               I     :     I                    111   .
                               I     :     I                 111    ..
                               I     :     I              111      .
                               I     :     I           111       ..
..                             I     +     I       1111         .
  ...                          I     :     I   1111           ..
     ....                      I     :     1111             ..
         ...                   I     :11111I              ..
            ....               I111111     I           ...
                .....    1111111     :     I        ...
                111111111.     I     :     I    ....
1111111111111111          ......................
===========================================================================
Point            =    2.000000D+00  s  =   5.0000D-03
Direction        =    1.000000D+00  h  =   3.0000D-02
F0 ( 2.64D-11, 1.42D-02) F1 (-6.11D-02, 1.77D-01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     374

               Figure 5 Interpolation to the First Derivative

          Inquiring  about  the value of the first derivative at the center
yields the number 5D-4.  This is much larger than the value for  the  error
itself,  and  hence  might  cause  some doubts.  However, the derivative is
calculated numerically and hence  not  exactly.    The  value  reported  by
MICROSCOPE  is  actually  the  truncation  error.  This can be confirmed by
halving the discretization parameter yielding the display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  26
                               I     :     I                           1111
                               I     :     I                        111 .
                               I     :     I                    1111   .
                               I     :     I                 111     ..
..                             I     :     I             1111       .
  ..                           I     :     I         1111          .
    ..                         I     :     I    11111            ..
      ..                       I     +     I1111               ..
        ...                    I     : 11111                 ..
           ..                  I  11111    I               ..
             ...             11111   :     I             ..
                ...    111111  I     :     I           ..
                1111111        I     :     I       ....
        11111111       ....    I     :     I   ....
11111111                   ....................
===========================================================================
Point            =    2.000000D+00  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 ( 2.64D-11, 3.03D-03) F1 (-4.21D-02, 7.09D-02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     418

                                  Figure 6

          Now  the  value of the derivative is 1.25D-4 which is a reduction
from the previous value by a  factor  4.    This  is  consistent  with  the
assumption  that  the reported error actually is the truncation error since
it decreases like the square of the discretization  parameter  h  (see  the
discussion in Appendix I).

          The  free  end  condition  (S"(2)  =  0)  can  be  considered  an
interpolation  condition.    However, it cannot be checked by examining the
error function, since the value of p"(2) is (in general) unknown.   So  one
has to consider the interpolant itself.  We obtain the display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  27
11                             I     :     I                          22222
  1                            I     :     I                     22222  1
   1                           I     :     I                22222      1
    11                         I     :     I           22222         11
      1                        I     :     I      22222             1
       11                      I     :     I 22222                11
         11                    I     :  22222                   11
           1                   I   22+22   I                   1
            11                22222  :     I                 11
              11         22222 I     :     I               11
                111 22222      I     :     I            111
               222221          I     :     I          11
          22222      111       I     :     I       111
     22222              1111   I     :     I   1111
22222                       1111111111111111111
===========================================================================
Point            =    0.000000D+00  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 ( 8.83D-01, 1.12D+00) F1 ( 1.26D+00, 1.27D+00) F2 (-2.53D-01, 2.53D-01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     505

                        Figure 7 Free End Condition

          That the second derivative is indeed zero  can  now  be  verified
using  the  same  techniques  as above (i.e.  inquiring directly or using a
decreased discretization parameter).

                              2.2  Smoothness

          In  the  present  example,  the  only  critical  set  is  the one

containing the point x = 1 (assuming we  are  confident  that  S  has  been
programmed  to  be polynomial elsewhere).  When investigating smoothness it
is usually preferable to examine an  error  (if  a  primitive  function  is
available) rather than the interpolant itself.  In the present example, the
error function at the single critical point yields the display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  28
                               I     :   3333333333333333333333333333333333
                               I     :  3  I                     .2222
                               I     : 3   I                 12222
                               I     :     I            112222
                               I     :     I       .112222
                               I     :3    I  .1112222
                               I     :    11122222
                               I     +1112222
                               I111112222  I
                          .1111222223:     I
                     1111222222I     :     I
                112222222      I     :     I
           1222222             I   3 :     I
     1222222                   I  3  :     I
3333333333333333333333333333333333   :     I
===========================================================================
Point            =    1.000000D+00  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 ( 2.49D+00, 2.97D+00) F1 ( 2.39D+00, 2.90D+00) F2 ( 2.48D+00, 3.11D+00)
F3 ( 2.73D+00, 4.06D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     592

                        Figure 8 Soothness at x = 1

          This  display  can  be  interpreted  similarly  as  figure 1, and
clearly shows a function that is twice but not three times  differentiable.
This is what we expect from our construction.

                          2.3  Degree of Precision

          The 'precision class' of an approximation scheme is  the  set  of
functions  that  are  reproduced  exactly  by  the  scheme.   Of particular
interest are the polynomials in the precision class.  The largest number q,
say, such that all polynomials of degree up to q are in the precision class
is the degree of polynomial precision.

          To  decide  if  any particular function is in the precision class
one approximates that function and investigates if the error is zero within
round-off effects.  This applies even to non-polynomial functions.

          To answer the more narrow question of polynomial precision it  is
possible  to  proceed  more  systematically  and  to examine polynomials of
increasing degree.  The polynomials should be as general as possible,  i.e.
they should be unlikely to introduce misleading artifacts.  One possibility
is to choose the coefficients randomly.  If  really  in  doubt,  one  might
examine  each  polynomial in a suitable basis of the appropriate polynomial
space.   The  points  of  examination  should  be  chosen  such  that  each
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  29
appropriate  part  of  the domain is covered.  For instance, in the present
example (which, incidentally, has linear precision) one should  choose  one
point > 1, and one < 1, covering both cases in the definition of S.

          The following figure illustrates the typical appearance of a zero
error.

                  .      .     I    .:     I  .
                      .    .   I     :     I     .                       .
                          .  . I     :     I                  ..
                               .     :  .  I       .    .           .
                              .I .   :     I      .
                               I   . :     I         .           .        .
    .   .   .                  I  .  .     I.
.               .              I     :     I           .           .
                    .          I     : .   I          .     .     .
                        .      I     :.  . I                            .
                            .  I     :     I    .        .           .
                               I     :     .
 . . . . . . . . .             I     :    .I .             .
                   . .         I.    :     I        .     .     .     ..
  .   .   .   .        .       I     :     I   .             .
===========================================================================
Point            =    2.342300D-01  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 (-9.99D-11, 9.78D-11)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     667

                           Figure 9 A Zero Error

          Notice how the values of the function are  spread  randomly  over
the  entire  display,  accurately  pinpointing  the round-off nature of the
error.  Sometimes, however, one has a situation in which  the  coefficients
of the interpolant are evaluated inaccurately, leading to an error that has
a scattered distribution with a bias like that in the following display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  30
                               I     :     I                       . .  .
                               I     :     I                     .  .
                               I     :     I              .    ..         .
                               I     :     I     .           .        .
                               I     :    .I   ..     .    ..     .      .
                               I   ..:     I .         . .             .
                         .    .I     :     ..     .  .  .     .
                      .        I .   :.  . I       .
                       ..      ..    : .   I  .     .
               ..         .  . I  .  :  .  I
 .     ..    .    .  .         I     .     I
.         .        ..      ..  I     :     I
  .  .     ..                  I     :     I
    .         .  .             I     :     I
   .  .  .                     I     :     I
===========================================================================
Point            =    2.342300D-01  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 ( 2.16D-10, 7.31D-10)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     742

                      Figure 10 Round-off With a Bias

                        2.4  Degree of a Polynomial

          Verifying  that  a  certain function is a polynomial of a certain
degree is often useful when examining cross derivatives.  For  example,  in
the  bivariate Clough-Tocher scheme (Alfeld, 1984) which is piecewise cubic
on a  triangle,  differentiability  between  triangles  is  forced  by  the
requirement that the normal derivatives across edges be linear (rather than
quadratic) along the edges.  In this illustration, let us verify  that  our
interpolant  is indeed cubic.  This can be accomplished by showing that the
third derivative is constant or that the fourth derivative is zero  (within
round-off).  One obtains for example the following display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  31
  3                            I     :     I                          22222
      3        3               I     :     I                     222221
                  3            I     :     I           3 3 32222211
                              3I     :     I           22222111
 3            3 3              I   3 :  3 3I3     222221111      3       3
       3              33   3   3     :     3 32322 1111           3       3
         3 3 3            3 3  I     :  22222. 11113         3       3
    33                   3   3 I3  23222. 11113   3 3   3   3   3     3 3
                              22222. 11111 I                       3
3       3 3      3  3    22222.I111113 3 3 I                        3
                    22223. 11111 33  :3    I    3     3   3   3        3
   3           22223 311111    I     :     I
          22222111111          I     :     I     3   3         3
     222221111                 I     :     I
2222211     3                  I     :     I
===========================================================================
Point            =    2.342300D-01  s  =   2.5000D-03
Direction        =    1.000000D+00  h  =   1.5000D-02
F0 ( 1.18D+00, 1.43D+00) F1 ( 1.29D+00, 1.41D+00) F2 ( 3.87D-01, 8.92D-01)
F3 ( 2.73D+00, 2.73D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     841

                         Figure 11 A Cubic Function

          Notice    that  the  third  derivative  is  clearly  affected  by
round-off,  without  any  apparent  bias.    On  the  other hand, since the
displayed limits of its range are identical the size of the range  is  less
than  1/273th  of  the derivative value.  A closer examination reveals that
the third derivative ranges from 2.7306 to 2.7323.    A  telltale  sign  of
round-off  errors  is that they can be decreased even further by increasing
the discretization parameter.  Doubling h yields the display:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  32
                               I     :     I                 3       322222
         3   3                 I 3   :     I                     2222231
33                             I     :     I                22222 111
            3     3 33         I     :  333I           233223  111
        3       3            3 3     :     I    3 22322.  31111
           3          3        I     :     I 22222.     111               3
     3        3           3 3  I   3 33322222.33 33 1111   3     3 3   3
   3   3                 3     I   22222.  I    1111          3     3
    3                  33  3  32322. :     I1111   3 3                  3
                         22222.I  3  : 1111333        3        3
                 3 322222.     I  11311    I                             3
  3       3    22222.        11111   :     I           3          3
          22222.      1111111  I     :     I
     23222.  111111111         I     :     I
2222211111111  3               I     :     I                    3
===========================================================================
Point            =    2.342300D-01  s  =   5.0000D-03
Direction        =    1.000000D+00  h  =   3.0000D-02
F0 ( 1.06D+00, 1.56D+00) F1 ( 1.27D+00, 1.50D+00) F2 ( 1.34D-01, 1.15D+00)
F3 ( 2.73D+00, 2.73D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     885

                                 Figure 12

          The  range  is now from 2.731361 to 2.731569 which is a reduction
by a factor 8.  This is consistent with the third derivative being constant
since  the round-off errors in the third derivative increase like the third
power of h, see Appendix I.  Further  increases  do  not  alter  the  basic
scattered structure of the third derivative (until the range covered in the
display includes the point x = 1, where the third  derivative  has  a  step
discontinuity).    Increasing the value of h should eventually decrease the
round-off errors below a level at which the true change in  the  derivative
becomes  visible  in  the display if the third derivative was not constant.
The fact that this does not happen indicates that there is no such  change.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  33
                            3. Using MICROSCOPE

          This  section  contains  a  description  of the master MICROSCOPE
routine MCRSCP  and  a  first  introduction  to  the  command  language  of
MICROSCOPE.  For a more detailed description consult section 4.

          During an interactive session the terminal screen may  be  either
'active'  or  'inactive'.    On an active screen, changes in parameters are
incorporated    immediately   into  the  alphanumerical  display  which  is
maintained  on the screen.  On an inactive screen, commands are accumulated
and carried out only when the screen is activated by either the command  GO
or  FORCE.  An  inactive  screen  shows  the  last  few  commands  and  the
corresponding data whereas an active  screen  shows  at  most  the  current
command and its data, in addition to the alphanumerical display.  (However,
an incomplete alphanumerical display may be called on an  inactive  screen,
see  the  description  of  the  command  RSCREEN  in  section  4.5  and the
discussion of the alphanumerical display in section 1.3.)

          A  second  distinction applies to the way in which screen changes
are implemented on an active screen.  In one version of  MICROSCOPE,  which
we call the 'screen version', the alphanumerical display is kept stationary
and only modified rather than replaced.  This version requires you or  your
system  manager  to  provide  four  simple screen editing routines that are
specific to each computer/terminal combination (see  chapter  5.)  If  this
facility  is  not  available,  or  if you use a hardcopy terminal, then the
'scroll version' of MICROSCOPE may  be  employed,  which  scrolls  the  old
screen and replaces it by a new version after each change.

          The screen version is much preferable,  and  in  this  manual  we
usually assume it is available.

          Another distinction pertains to the  utilization  of  lower  case
letters.    The  use  of  lower  case  letters  in a FORTRAN program is not
portable, but now most installations do provide this  facility.    In  this
manual  we  assume lower case letters are available.  If so, any lower case
letters occuring in the input to the program are treated as  if  they  were
upper case.  Thus commands can be given in lower case letters.  Output from
MICROSCOPE consists of a mixture of lower and upper case letters.  However,
to  maintain  portability  we  provide  a  version of MICROSCOPE that works
solely with upper case letters.  Section 5 contains more information.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  34
                           3.1 The MCRSCP Routine

          To  put  MICROSCOPE into operation, you will have have to write a
FORTRAN main program that calls the routine

     MCRSCP(F, INPUT, OUTPUT, GRAPHC, HELP, RECORD, RESTART,
    X       LINES, WIDTH, PLOT, NUMRCL, PROMPT)

          The  first  parameter  is the name of a DOUBLE PRECISION function
(the trial function).  It has the form

      DOUBLE PRECISION FUNCTION F(X)
      DOUBLE PRECISION X
      DIMENSION X(1)
              .
              .
              .
      F = ...
      RETURN
      END

and  must be declared EXTERNAL in the calling program.  MICROSCOPE will set
at most the first three components of X before calling  F  (i.e.    it  can
handle  only  functions  of up to three variables).  Notice that F does not
have any parameters other than the values  of  the  independent  variables.
Usually,  however,  it  will also depend on parameters describing e.g.  the
domain data structure.  These are most conveniently passed to F in a common
block.

          All of the remaining parameters of  MCRSCP  are  input  integers.
MCRSCP  will  not  change  them,  and  they may therefore be integer values
rather than variables.  The first six of them (i.e.  INPUT, OUTPUT, GRAPHC,
HELP,  RECORD,  RESTART)  are  FORTRAN  device numbers corresponding to the
first six I/O numbers listed in the numerical display  (see  section  1.3).
It  is  your responsibility to set up the necessary correspondences between
device numbers and physical devices or disk files.

          The  last five parameters describe the physical dimensions of the
screen display.  Their meaning is as follows:  (Numbers in parentheses give
the value used for the examples in this manual, square brackets contain the
allowable ranges for the parameters).

          LINES  (24):    The  total  number  of lines used on the terminal
screen [10 < LINES < 58].

          WIDTH (75):  The number of columns used for the graphical display
[0 < WIDTH < 136].  Usually one will choose as large a  value  as  possible
for  maximum resolution.  However, small values may sometimes be preferable
for increased speed.  For a symmetrically placed vertical axis,  the  value
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  35
of  WIDTH  should be odd.  The numerical display occupies up to 75 columns.
This is therefore the minimum physical width of the output device.    WIDTH
is  also  the  number  of  points  at  which derivatives are sampled in the
<PLOT79> display.

          PLOT  (15):    The  number  of  lines  allocated to the graphical
display [0 < PLOT < 49].  Again, a value  of  PLOT  as  large  as  possible
should be supplied.  The numerical effort is independent of PLOT.

          NUMRCL (8):  The number of lines above the screen bottom at which
the numerical display begins.  [5 + PROMPT < NUMRCL < LINES - PLOT].

          PROMPT (2):  The number of lines above the screen bottom at which
the MICROSCOPE prompts are given.  [1 < PROMPT < LINES - PLOT - 6].

          Usually, MCRSCP will  be  called  only  once  during  a  session.
However,  it is possible to call your own routines from MCRSCP. You have to
supply a subroutine SUBUSR without any parameters which can  be  called  by
MCRSCP  A detailed discussion of this procedure is given in section 4.15 on
user intervention.  For now we may assume that SUBUSR is a dummy routine

      SUBROUTINE SUBUSR
      RETURN
      END

(which  is supplied with the MICROSCOPE package and which you can of course
write yourself).

          When  called,  MCRSCP  first prints an identifying stencil on the
OUTPUT device, containing its version  number  and  the  last  modification
date.    Next,  it  checks  to  see  if  the  screen parameters satisfy the
restrictions  listed  above.    If  not  then  MCRSCP  exits,  rather  than
terminates, in order to give you a chance to correct your mistake.

          On the first call to MCRSCP it  computes  the  machine  round-off
unit  (see section 4.1) and prints its common logarithm to give you an idea
of how many decimal digits are carried on the computer.  The actual  number
relevant  to  your  investigation  may  of  course be less depending on the
details of the arithmetic involved in evaluating the trial function.

          Also on the first call only, MCRSCP then prints the first line of
any available news (see section 4.10) to help you decide  if  you  wish  to
read them.

          After setting some defaults MCRSCP then enters the command  mode,
in which it accepts, interprets and carries out the commands entered on the
Input Device.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  36
                            3.2 The Command Mode

          The MICROSCOPE prompt is of the form:
 n  >>
where n is the number of the command to be given.  It starts at  1  and  is
incremented by 1 after each command.

          A MICROSCOPE command is a string of  at  least  two  letters  and
digits.    However,  only  the  first  two  characters  are significant and
recognized by the parser.  They must be entered in the  first  two  columns
immediately following the prompt.  On an active screen, this will be in the
same line as the prompt,  on  an  inactive  screen,  or  in  the  scrolling
version,  on  the  next  line.   Blank spaces are significant.  (MICROSCOPE
simply reads the command using a 2A1 format.  The remaining columns can  be
filled  with  arbitrary  characters.    They  are  not read or processed by
MICROSCOPE.  This is sometimes useful for including comments in a  program.
A command line is terminated by pressing the RETURN button.

          After a command you will be prompted for the appropriate data (if
any are needed).  The prompt describes what data are needed and is specific
to the command.  There are seven types of data requests:

          -1- No Data

          -2- A command name (to obtain help on the requested command)

          -3- 1 Integer

          -4- 2 Integers

          -5- 1 Double Precision variable

          -6- 1 Double Precision Vector

          -7- 2 Double Precision Vectors

          The dimension of the  vectors  is  identical  to  the  number  of
variables of the trial function.  (The default is 2, see section 4.18 for a
listing of all defaults).  Numbers are processed by an internal parser  and
are  essentially  format free.  The following distinctions and restrictions
apply, however:

          - Blanks are ignored.  For example "1 2" is considered the single
integer 12.

          - Numbers on the same line must be separated by commas.

          - Numbers can also be separated by writing them on separate lines

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  37
(omiting the comma).

          - If two vectors are requested the second vector must start on  a
new line .

          - An empty string (obtained by just pushing the RETURN button) is
considered  to  mean  zero  whenever  a  single number (Integer or Real) is
requested.  This is particularly useful when a zero entry  implies  that  a
submode (see the descriptions of the PLOT and the USER commands in sections
4.14 and 4.15 respectively) is to be exited.

          -  When  two  integers  are  requested  either one or both can be
represented by an empty string.  (The only command for which this is useful
is TYPE.)

          - Floating Point numbers (like 1.0E-12  or  1D-4)  are  processed
correctly.

          - Floating Point numbers may also be represented as integers.

          After  receiving  the  data, MICROSCOPE processes the command and
the data.  If the screen is active the  command  is  carried  out  and  the
alphanumerical  display  is updated, otherwise the next command is prompted
for.

          If  a  command  is  not  recognized  a message is printed to that
effect and a new command is prompted for.  If data  are  requested,  and  a
number  is  not  recognized,  then new data will be requested.  However, if
data are syntactically  correct,  but  otherwise  meaningless  (e.g.    you
request  the  graph  of  the  117th  derivative),  then the command will be
aborted and a new command will be prompted for.

          There are currently 63 commands which divide into 11 major groups
corresponding to sections 4.5 through 4.15.   Rather  than  describing  the
groups  in  this  section,  we  illustrate  some of them in the course of a
search for a point of reduced smoothness (the 'active point'),  giving  the
names  of  the  commands used, and further illustrating the capabilities of
MICROSCOPE.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  38
               3.3  A Discontinuity in the second derivative

          The trial function underlying this example is

                       2       x                      x
          f(x) = (eta*x )/2 + e  if x > 0 and f(x) = e  otherwise

(where eta = -0.005).  Clearly f is once but not  twice  differentiable  at
the  origin.    The exponential term serves to conceal the discontinuity in
the second derivative.  (Similar functions  that  are  0  through  5  times
differentiable  can  also  be  examined  for  arbitrary values of eta.) The
parameters are  changed  by  giving  the  user  intervention  command  USER
(assuming  the  test  package has been loaded, see appendix III and section
5).

          Let us pretend we do not know the the degree of smoothness but we
wish to examine it.  We first inform MICROSCOPE that the trial function has
one  independent variable, using the DMNSN command.  Then we enter a search
interval (here [-1,3], say) using the IINTVL command.  At this  stage,  the
screen  is  still  inactive.    This  is  changed, and the first display is
obtained, by giving the  GO  command.    The  display  will  remain  active
throughout the remainder of this section.  We obtain:

                               I     :     I                             ..
                               I     :     I                            .
                               I     :     I                          ..
                               I     :     I                         .
                               I     :     I                       ..
                               I     :     I                     ..
                               I     :     I                   ..
                               I     :     I                 ..
                               I     :     I              ...
                               I     :     I           ...
                               I     :     I       ....
                               I     :     I  .....
                               I     : .......
                           ............    I
...........................    I     :     I
===========================================================================
Point            =    1.000000D+00  s  =   5.4054D-02
Direction        =    4.000000D+00  h  =   3.2432D-01
F0 ( 3.68D-01, 2.01D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     960

                                 Figure 13

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  39
          This display shows no lack of smoothness at all.  So, not knowing
about  the  nature  of  the  suspected  discontinuity at all we turn on the
horizontal scale (using DSCALE) to locate any  phenomena  of  interest  and
activate  (using  DGRAPH)  the  graph of the highest possible (i.e.  sixth)
derivative.  These changes are incorporated one by  one  (not  shown  here)
into an active screen.  The final result is this:

                 6             I     :     I                             ..
                               I     :     I                            .
                  6            I     :     I                          ..
                               I     :     I                         .
                      6        I     :     I                       ..
                               I     :     I                     .666666666
                6      6       I     :     I    666666666666666666
66666666666666321.987654666666666666666666666666123456789.123..6789.1234567
              6      6         I     :     I              ...
                               I     :     I           ...
               6               I     :     I       ....
                               I     :     I  .....
                   6           I     : .......
                           ............    I
....................6......    I     :     I
===========================================================================
Point            =    1.000000D+00  s  =   5.4054D-02
Direction        =    4.000000D+00  h  =   3.2432D-01
F0 ( 3.68D-01, 2.01D+01) F6 (-6.07D+01, 6.27D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     972

                                 Figure 14

          Now it is clear that there is a phenomenon of some kind  occuring
at  the  point  -17  measured  on  the  horizontal  scale.  To examine this
further, we shift the  graph  by  17  (using  SHIFT).    This  centers  the
interesting parts of the graph, yielding:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  40
                               I  6  :     I                             ..
                               I     :     I                            .
                               I   6 :     I                          ..
                               I     :     I                         .
                               I     : 6   I                       ..
                               I     :     I                     ..
                               I 6   :  6  I                   ..6666666666
6666666666666666666666666666666654321.12366666666666666666666666689.1234567
                               6     :6    I              ...
                               I     :     I           ...
                               I6    :     I       ....
                               I     :     I  .....
                               I    6: .......
                           ............    I
...........................    I     6     I
===========================================================================
Point            =    8.108108D-02  s  =   5.4054D-02
Direction        =    4.000000D+00  h  =   3.2432D-01
F0 ( 1.47D-01, 8.00D+00) F6 (-6.07D+01, 6.27D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     989

                                 Figure 15

          Already at this stage it is possible to tell the  nature  of  the
reduced smoothness.  The sixth derivative clearly shows four distinct local
extrema.  This qualifies it as the third (numerical) derivative of a  delta
function.   The second derivative of the trial function must therefore be a
step    function.    The  trial  function  is  hence  once  but  not  twice
differentiable.    Derivatives of step functions are discussed in detail in
section 4.2 and in appendix I.

          To  confirm  our  diagnosis  directly  we  examine  the    second
derivative.  Turning on its graph and erasing the distracting graph of  the
trial  function (using EGRAPH), however, yields the following display which
shows no lack of smoothness at all in the second derivative:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  41
                               I  6  :     I                             22
                               I     :     I                            2
                               I   6 :     I                          22
                               I     :     I                         2
                               I     : 6   I                       22
                               I     :     I                     22
                               I 6   :  6  I                   226666666666
6666666666666666666666666666666654321.12366666666666666666666666689.1234567
                               6     :6    I              222
                               I     :     I           222
                               I6    :     I       2222
                               I     :     I  22222
                               I    6: 2222222
                           222222222222    I
222222222222222222222222222    I     6     I
===========================================================================
Point            =    8.108108D-02  s  =   5.4054D-02
Direction        =    4.000000D+00  h  =   3.2432D-01
F2 ( 1.48D-01, 8.08D+00) F6 (-6.07D+01, 6.27D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =     989

                                 Figure 16

          The  second  derivative appears smooth because the discretization
is too crude to show its discontinuity.  So we keep decreasing the value of
the  discretization parameter (and simultaneously the interval, keeping the
window width fixed).  Since the active point is only approximately  in  the
center of the display, this will cause it to drift to one side which has to
be counteracted by more shift commands.  Because  of  the  organization  of
MICROSCOPE  it  is  particularly  efficient  and  convenient  to divide (or
multiply) with powers of two.  Halving h four times (using HALVE)  followed
by a shift of 24 and four more halvings yields, after erasing the scale and
the graph of the sixth derivative:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  42
                               I     :     I                           2222
                               I     :     I                       2222
                               I     :     I                    222
                               I     :     I                 222
                               I     :     I              222
                              222222 :     I           222
                            22 I    2:     I       2222
                       2 222   I     2     I    222
                     22 2      I     :22   I 222
                 2222          I     :  22222
             2222              I     :     I
           22                  I     :     I
       2222                    I     :     I
    222                        I     :     I
2222                           I     :     I
===========================================================================
Point            =   -1.040834D-17  s  =   2.1115D-04
Direction        =    4.000000D+00  h  =   1.2669D-03
F2 ( 9.92D-01, 1.00D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    1353

                                 Figure 17

          Now  it is clear that there is a jump discontinuity in the second
derivative of the trial function.  The location of the active point can  be
seen  to  be  0  +/-  about  s  = 0.0002.  Even the size of the jump can be
estimated.  Inquiring (using TYPE) for the values of the derivative at  the
left  and  right  end  points of the window (where in this crude display it
assumes    its    extrema)  yields  values  of  9.98846D-1  and  9.96522D-1
respectively,  corresponding  to  a  jump of -2.32D-3.  The real jump is of
course eta = -5.0D-3.  The discrepancy is due to a  truncation  error,  not
just  in  approximating  the  derivative, but also in picking the points of
evaluation.  The estimate can be improved by extrapolating  (linearly)  the
left  and right parts of the second derivative to the point of examination,
using an estimate of the third derivative which can be obtained from one of
the  earlier  displays.    With  the  third derivative set equal to 1, this
procedure yields an estimate of -2.32D-3 - 12s = -4.86D-3 which is  a  very
good result considering the difficulties of numerical differentiation.

          In the present setting,  it  is  not  possible  to  decrease  the
discretization  parameter further without succumbing to round-off errors in
the second derivative (you may wish to try this yourself).    However,  the
above  example  illustrates  how  to alleviate the limitations of round-off
errors.  We already recognized the true nature of  the  reduced  smoothness
when  examining  the  sixth  rather  than  the second derivative.  With the
accuracy used for the examples in this manual (10  digits),  steps  in  the
second derivative 300 times as small as the one above can be detected.  The
following display shows the graph of the  sixth  derivative  for  the  same
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  43
function  as above with eta = -1.7D-5 and h = 0.24.  These values have been
taken from table 4 in appendix I (tau = 1.0D-10).

                               I     :     I                             66
                               I     :     I                           66
                               I     :     I                         66
                               I     :     I                       66
                               I     :     I                     66
                               I     :     I                  666
                               I     :     I                66
                               I     :     I             666
                               I     :     I         6666
                               I    6:     I     6666
                               I   6 :   6 I 6666
                               I     :  6 666
                              666    6     I
                  666666666666 I 66  : 6   I
666666666666666666             I     :6    I
===========================================================================
Point            =   -1.040834D-17  s  =   4.0000D-02
Direction        =    4.000000D+00  h  =   2.4000D-01
F6 ( 2.23D-01, 4.40D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    1440

                   Figure 18 At the limits of resolution

          The sixth derivative shows 4 extrema, identifying the step in the
second derivative.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  44
             4. A Detailed Description of Features and Commands

                           4.1 Round-Off Effects

          The  fact  that  all  arithmetic  operations are carried out with
finite    accuracy  is  fundamental  and  all  pervasive  in  working  with
MICROSCOPE.    Numerical  Differentiation  is  particularly  sensitive   to
rounding since it involves the  subtraction  of  nearly  equal  quantities,
leading  to  a  cancellation  of  significant digits.  Consequentially, the
error in numerical differentiation does not decrease indefinitely with  the
discretization  parameter, but rather starts to behave erratically beyond a
certain minimum value and tends to increase as the discretization parameter
is  decreased  further.    However,  it  is  its very randomness that makes
round-off errors readily apparent in a MICROSCOPE display so that you  will
not be misled into accepting meaningless results at their face value.

          The precise effect  of  rounded  arithmetic  depends  on  several
factors:

          -1- The number  of  significant  (binary)  digits  carried  by  a
particular  computer.    Most  users  will  prefer  an approximation of the
equivalent number of decimal digits, and so MICROSCOPE computes that number
and  prints  it  out  at  the  beginning  of  a  session.   More precisely,
MICROSCOPE computes the smallest power of 2, tau, say, such that within the
given computer arithmetic the quantity 1 + tau satisfies a test for greater
than 1, and then prints the rounded value of the negative common  logarithm
of tau.

          -2-   The  accuracy  with  which  the  trial  function  is  being
evaluated.   That accuracy will always be less than or at most equal to the
accuracy indicated in -1-.  Usually it will be much less, for  any  of  the
following reasons:

          -2.1- Typical  multivariate  interpolants  are  very  complicated
algebraically,  involving  many operations which tend to increase round-off
errors.

          -2.2-  If,  as  is frequently the case, the trial function is the
difference between  a  primitive  function  and  its  interpolant,  then  a
cancellation of significant digits occurs.

          -2.3- If the display function is a cross derivative of the  trial
function  it  is  already contaminated by round-off errors due to numerical
differentiation, thus exhibiting effects that one would normally expect  to
occur only for higher order tangential derivatives.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  45
          -3-  The  precise  nature  of  round-off  effects  is  also  very
sensitive  to  the  relative  magnitudes  of various tangential derivatives
involved.  For example, a constant function will exhibit  round-off  errors
at any value of the discretization parameter.

          Of the above three sources of round-off errors, you will  usually
have a firm knowledge only of the first.  Knowledge about the other two may
be gained by using MICROSCOPE itself.  This is usually more effective  than
attempting a theoretical analysis.

          The precise nature of round-off errors is discussed  in  Appendix
I.  Detailed  formulas  and  tables are given.  However, the usual approach
will be to experiment with various values of the discretization  parameter,
choosing  it  as  small  as possible without generating the telltale random
pattern that indicates round-off errors.

                     4.2  Derivatives of Step Functions

          One  perhaps  surprising  feature of numerical differentiation is
that doubtful discontinuities in some derivatives can  often  be  displayed
very  clearly  by  plotting  higher  order derivatives, even though a large
discretization parameter is  necessary  to  keep  them  free  of  round-off
errors.  This fact becomes quickly apparent empirically, and is analyzed in
Appendix I.

          The  conceptual  basis  for  the  approach is provided by a Dirac
Delta function (see Courant and Hilbert, 1962, p.456).  A step function can
be  thought  of as rising at the discontinuity with infinite slope from one
discrete value to another.  If it is piecewise constant its derivative  can
be  thought  of  as  a  function  that  is  zero  everywhere, except at the
discontinuity, where it  is  infinite  such  that  the  integral  over  the
derivative  equals  the  jump  in  the step function.  That derivative is a
delta function.

          More precisely, a delta function about a point P, say, is defined
as the limit of a sequence of non-negative  functions  that  are  different
from  zero  only in neighborhoods of P. The diameter of those neighborhoods
tends to zero, and the value of the integral  over  the  functions  remains
constant (at 1 in the classical definition).

          Derivatives of a delta function can be visualized by  considering
a  function  in  the  above sequence.  Suppose it is bell shaped.  Then its
derivative will have two local extrema  of  opposite  signs.    The  second
derivative  will  have  three  extrema,  etc.  Taken to the limit, the k-th
derivative of a step function has k local extrema of alternating signs, all
located at the same point.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  46
          Numerical  derivatives  of  a  step  function  exhibit  the  same
phenomena,  if  the  discontinuity  is smeared out over a window containing
sufficiently many points.  This is illustrated in the pictures below.   The
step  discontinuities occur in the m-th derivatives, where m = 0,1, ..., 5.
The discretization parameter is h = 1, and the size of the jump is 1.  More
precisely, the m-th function is defined by

                                           m
                  s(x) = 0 if x < 0   and x /m! otherwise,

where the exclamation mark denotes the factorial.

          Notice  that  as  the  degree  of  the  discontinuous  derivative
increases, the smoothness of the graphs of  higher  derivatives  increases.
This  is consistent with the interpretation of numerical differentiation as
a smoothing process.  (The numerical derivatives have the  same  degree  of
smoothness  as  that of the display function, just the number of the points
of reduced smoothness is increased.)

1111111..........5555555555444444444466666666665555555555222222222211111111
       I                             :                             I
       I                             :                             I
       I         6666666666          :                             I
       I                             :              444444444444444I
       I                             :                             I
       I                             :                   6666666666I
6666666I                             :                             66666666
55555556666666666                    :                             55555555
       444444444444444               :                             I
       I                             :                             I
       5555555555                    :         66666666665555555555I
       I                             :                             I
       I                             :                             I
       333333333333333222226666666666555555555544444333333333333333........
Point            =    0.000000D+00  s  =   3.3333D-02
Direction        =    1.000000D+00  h  =   1.0000D+00
F0 (-1.00D+00, 9.98D-11) F1 (-5.00D-01, 7.68D-11) F2 (-1.00D+00, 1.00D+00)
F3 (-4.00D+00, 4.00D+00) F4 (-4.80D+01, 4.80D+01) F5 (-2.43D+02, 3.65D+02)
F6 (-7.29D+03, 7.29D+03)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    1662

             Figure 19 Derivatives of a Step Function  (m = 0)

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  47
222222222211              665       444        66 33333          2222222222
       I  221111         65 65     4 : 4      6 36     33      22  I
       I    22  1111   665   655  4  :  4    633  66     33  22    I
       I      22    11615       54   :   4  33      6    5 33      I
       I        22   6 51111  6 45   :    436        6  5255533    I
66666666          266 5     1116  55 :  33 6          662    5553  66666666
       I666666    6 25        4 11115:33    4        22 6    666666I
555555555     6666  5 22     4  6   3511  6  4     22 5  6666     555555555
       I 555       5    22  4    633 :551611  4  22  5             I
44444444   355            24    33   :  5   11142   5              44444444
       I444  3555 5       4 2233  6  :  65   22 4115            444I
       I   444 335       4  3322   6 : 6  552    45 1111     444   I
       I      44433     4 33    22   :   22 5    54     11444      I
       I         4443  433        226:622    5  5  4   444  1111   I
       I            4443            262       55    444         11111111111
===========================================================================
Point            =    0.000000D+00  s  =   3.3333D-02
Direction        =    1.000000D+00  h  =   1.0000D+00
F1 (-1.00D+00, 4.28D-11) F2 (-1.00D+00, 2.85D-10) F3 (-2.00D+00, 2.00D+00)
F4 (-8.00D+00, 1.60D+01) F5 (-8.10D+01, 8.10D+01) F6 (-1.46D+03, 9.72D+02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    1797

                                           0
               Figure 20 Derivatives of a C  Function (m = 1)

333333333333322222           666665555555   4444444           3333333333333
       I     33   22222     6    56  :   544       44       33     I
       I       33      2222     5    :   45          4    33       I
       I         3         62  5   6 :  4  5          44 3         I
       I          33      6  252     : 4    5          644         I
       I            3        5  22  6:       5      666 6664       I
       I             3   6        222:4            6 3     6666    I
6666666666666         3 6   5        62       5   6 3          666666666666
555555555   4666       6   5        4: 22      5 6 3              555555555
       I 555   46666666 3            :6  22       3            555 I
       I    55    4      35        4 :     222  63           55    I
       I      55   44    5 3      4  : 6      2625         55      I
       I        5    4      33   4   :       33  222      5        I
       I         5    455     344    :  6  33 6   55222225         I
       I          55555 4444444 33333333366666      55555222222222222222222
===========================================================================
Point            =    0.000000D+00  s  =   3.3333D-02
Direction        =    1.000000D+00  h  =   1.0000D+00
F2 (-1.00D+00, 1.99D-10) F3 (-1.00D+00, 1.74D-09) F4 (-2.67D+00, 2.67D+00)
F5 (-8.98D+00, 1.35D+01) F6 (-1.46D+02, 1.46D+02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    1932

                                           1
               Figure 21 Derivatives of a C  Function (m = 2)
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  48

444444444444444443333               666     5555555       44444444444444444
       I         444 3333          6 : 6   5       5   444         I
       I            4    333      6  :  6 5         554            I
       I             44     33   6   :   6          445            I
       I               4      33     :  5          4   55          I
       I                4       633  : 5  6       4      5         I
       I                 4         33:5          4        555      I
55555555555555            4    6     53    6    4            55555555555555
       I      555          4        5: 33      4                   I
       I         55         4 6    5 :   33 6 4                    I
6666666666666666   5         6    5  :     336             6666666666666666
       I        66  5         4  5   :      433          66        I
       I          66 55     6  45    :    44  6333     66          I
       I            6  5   6  55 4   :   4     6  33336            I
       I             666666555    4444444       666666333333333333333333333
===========================================================================
Point            =    0.000000D+00  s  =   3.3333D-02
Direction        =    1.000000D+00  h  =   1.0000D+00
F3 (-1.00D+00, 1.60D-09) F4 (-1.33D+00, 1.14D-08) F5 (-3.00D+00, 3.00D+00)
F6 (-1.28D+01, 2.70D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2067

                                           2
               Figure 22 Derivatives of a C  Function (m = 3)

555555555555555555544444             :    666666        5555555555555555555
       I           55   4444         :   6      6     55           I
       I             5      44       :  6        66  5             I
       I              5       44     :             65              I
       I               5        44   : 6           566             I
       I                5         4  :6           5   6            I
       I                 5         44:           5     666         I
66666666666666666         5          6          5         66666666666666666
       I         666       5         :44       5                   I
       I            66      5       6:  4     5                    I
       I              6      5     6 :   44  5                     I
       I               6      5   6  :     45                      I
       I                66     55    :    55 444                   I
       I                  6     66   :   5      444                I
       I                   66666  5555555          444444444444444444444444
===========================================================================
Point            =    0.000000D+00  s  =   3.3333D-02
Direction        =    1.000000D+00  h  =   1.0000D+00
F4 (-1.00D+00, 9.60D-09) F5 (-1.38D+00, 6.61D-08) F6 (-4.13D+00, 4.13D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2202

                                           3
               Figure 23 Derivatives of a C  Function (m = 4)

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  49
6666666666666666666665555            :                666666666666666666666
       I             66  555         :              66             I
       I               66   55       :            66               I
       I                 6    55     :           6                 I
       I                  6     55   :          6                  I
       I                   6      5  :         6                   I
       I                           55:                             I
       I                    6        5        6                    I
       I                     6       :55     6                     I
       I                      6      :  5   6                      I
       I                       6     :   556                       I
       I                        6    :    655                      I
       I                         6   :   6   55                    I
       I                          6  :  6      555                 I
       I                           66666          5555555555555555555555555
===========================================================================
Point            =    0.000000D+00  s  =   3.3333D-02
Direction        =    1.000000D+00  h  =   1.0000D+00
F5 (-1.00D+00, 5.09D-08) F6 (-1.65D+00, 2.67D-06)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2337

                                           4
               Figure 24 Derivatives of a C  Function (m = 5)

                              4.3  The Window

          Sometimes it is desirable to use very small window widths or even
completely separate differentiation stencils, for example when searching  a
large domain for a point of reduced smoothness.  Then steps in a derivative
will appear as such rather than as gradual slopes that might be obscured by
other  features  of  the  relevant  graphs.  Also, cusps and poles are best
displayed using  small  windows  (see  appendix  III  for  some  examples).
Usually, however, it will be preferable to use larger windows.

          There are two main reasons  to  use  overlapping  differentiation
stencils:    first,  as  illustrated  in  the preceding subsection, this is
necessary to resolve all the extrema of a derivative of a  delta  function,
and,  second,  it  allows the use of one evaluation of a trial function for
several    values  of  a  derivative,  thereby  increasing  efficiency  and
accelerating  your interaction with MICROSCOPE.  Using overlapping stencils
is equivalent to having a window width (w = 2h/s) that is greater than 1.

          Due  to  the  internal  organization of MICROSCOPE, for any given
window width, the number of evaluations (of the display function)  required
is determined solely by the largest degree of the plotted derivatives.  The
following table lists formulas for computing the number  N  of  evaluations

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  50
required  given  the  window  width  (w),  the  highest degree of a plotted
derivative (k) and the number of columns (C) in the graphical display.

    max k:     0        1 or 2          3 or 4          5 or 6

 w=2h/s

 < 1           C          3C              5C              9C

  2            C         C + 2          2C + 3          4C + 5

  4            C         C + 4           C + 4          3C + 8

  6            C         C + 6          2C + 9          2C + 9

  8            C         C + 8           C + 9          3C + 16

 10            C         C + 10         2C + 15         4C + 25

 12            C         C + 12          C + 12          C + 12

 14            C         C + 14         2C + 21         4C + 35

 16            C         C + 16          C + 16         3C + 32

 18            C         C + 18         2C + 27         2C + 27

 20            C         C + 20          C + 20         3C + 40

 22            C         C + 22         2C + 33         4C + 55

 24            C         C + 24          C + 24          C + 24

                    Table:  Efficiency of Window Widths

          The  special  role  played  by  w = 12 is obvious:  the numerical
effort is independent of the degree of the plotted derivatives, and exceeds
the  number  of  columns  in  the display only by a constant.  This is true
whenever w is a multiple of 12.  The reason for this is,  of  course,  that
the  display  function  is  sampled  at  multiples  of  1/2  and 1/3 of the
discretization parameter.  For efficiency, the default value of  w  is  12.
This  is  also  sufficient for most examinations involving delta functions.
Sometimes, however, a larger multiple, like 24 or 36 may be desirable.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  51
                      4.4  Reference Table of Commands

          This subsection contains a quick reference table of all available
commands.  For each command, a one-line description is given.   Often,  the
information  contained  in  these  short  descriptions  will be all that is
needed.  Therefore, the descriptions are used in several  other  places  An
appropriate  selection  of  them  occurs  at  the  beginning of each of the
following subsections.  The HSUMRY command lists them  ordered  by  topics.
The  more  detailed  HELP  command  gives  a documentation of an individual
command headed by the one-line description.

Name                Description                 Data   Error   Screen

ACCENT  mark derivative with asterisks  TOGGLE   k    -1<k<7   immediate
C1CROSS read 1st component of cross direction    C1     C><0   deactiv.
C2CROSS read 2nd component of cross direction    C2    C><0;1  deactiv.
C3CROSS read 3rd component of cross direction    C3    C><0;1  deactiv.
CCHANNL change channel number                    ic,nc  4        ---
CDIRCTN read direction of cross direction        C      C><0   deactiv.
CHVALUE read ch for cross differentiation        ch     5      deactiv.
CORDER  read order of cross derivative           k     -1<k<7  deactiv.
CWINDOW change window width by factor     SIGN   m      m=0    immediate
D1CHDIR read 1st component of dir. of inv.       D1     D><0   deactiv.
D2CHDIR read 2nd component of dir. of inv.       D2    D><0;1  deactiv.
D3CHDIR read 3rd component of dir. of inv.       D3    D><0;1  deactiv.
DCENTER draw center of graph. display   TOGGLE   ---    ---    immediate
DGRAPH  draw graph                               k     -1<k<7  immediate
DIVIDE  divide h by integer m             SIGN   m      d><0   immediate
DMNSN   read dimension v of domain               v     0<v<4   deactiv.
DOUBLE  double h                                 ---    ---    immediate
DSCALE  draw scale in graphical display TOGGLE   ---    ---    immediate
DXAXIS  draw horizontal axis            TOGGLE   ---    ---    immediate
EGRAPH  erase graph                              k     -1<k<7  immediate
EXIT    return to calling program                ---    ---    deactiv.
FLIP    replace d by -d                 TOGGLE   ---    ---    immediate
FORCE   recompute everything                     ---    ---    activ
GO      compute whatever is needed               ---    ---    activ
HALVE   halve h                                  ---    ---    immediate
HELP    obtain detailed help on command cmd      cmd     2       ---
HSUMRY  obtain a summary of all commands         ---    ---      ---
IDIRCTN read the direction of investigation      D      D><0   deactiv.
IHVALUE read value of h                          h      h>0    deactiv.
IINTVL  read endpoints of line of investig.      A,B    A><B   deactiv.
IPOINT  read the new point of examination        P      ---    deactiv.
LCROSS  load a new cross direction               kc      3     deactiv
LDRCTN  load a new direction of investigation    kd      3     deactiv
LIST    print all currently available commands   ---    ---      ---
LOG     give channel number for logging          nc     ---      ---
LPOINT  load a new point of examination          kp      3     deactiv.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  52
MULTPLY multiply h by factor m            SIGN   m      m><0   immediate
NEWS    print the news                           ---    ---      ---
NORMAL  turn normalization of D on/off  TOGGLE   ---    ---    deactiv.
OUTPUT  write screen immage on recording device  ---    ---      ---
P1CHPNT read first component of P                 P1    ---    deactiv.
P2CHPNT read second component of P                P2     1     deactiv.
P3CHPNT read third component of P                 P3     1     deactiv.
PAUSE   pause until RETURN from channel nc        nc    ---      ---
PLOT    enter plotting (<PLOT79>) mode           ---    ---      ---
QUIT    terminate MICROSCOPE session             ---    ---      ---
RCROSS  read channel number for cross list        nc    ---      ---
RDIRCTN read channel number for direction list    nc    ---      ---
RESTART reestablish earlier parameter settings   ---    ---      ---
ROTATE  change direction of investigation         DD    D><0   deactiv.
RPOINT  read channel number for point list        nc     1       ---
RSCREEN refresh screen                           ---    ---    pending
RWIND   rewind device nc                          nc    ---      ---
SETDF   reset defaults                           ---    ---    deactiv.
SHIFT   shift point of examination                is    ---    immediate
STORE   store current parameter settings         ---    ---      ---
TCENTER type value of k-th derivative at center   k    -1<k<7    ---
TNOTE   take a note on recording device          ---    ---      ---
TYPE    Type value of derivative at some point   k,is  -1<k<7  immediate
UNDO    undo previous parameter changes          ---    ---      ---
USER    enter user mode                          ---    ---      ---
WAIT    make program wait for GO or FORCE com.   ---    ---    deactiv.
ZOOM    change window width by factor      SIGN   m     m><0   immediate

                     Quick Reference Table of commands

                         Key to table of commands:

                             --  Description --

TOGGLE         the command reverses itself if called again

SIGN           means  that  reversing  the  sign  of  the  input  parameter
               generates  the  opposite  effect  (e.g.  multiply instead of
               divide).

                               --   Data  --

A              one endpoint of the line of investigation
B              the other endpoint of the line of investigation (P  =  (A  +
               B)/2)
C              cross direction
C1             first component of cross direction
C2             second component of cross direction
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  53

C3             third component of cross direction
ch             discretization parameter for cross derivatives
cmd            command name
D              direction of investigation
D1             first component of direction of investigation
D2             second component of direction of investigation
D3             third component of direction of investigation
DD             correction to be added to D
ic             type  of  device  (1  =  input, 2 = output, 3 = graphic, 4 =
               record, 5 = restart)
is             integer  shift  in  number of columns on display, +ve shifts
               graph to right, point to left, -ve is reverse
k              degree of a derivative (to be plotted, erased, etc.)
kc             position of the cross direction in a list
kd             position of the direction of investigation in a list
kp             position of the point of examination in a list
m              integer multiplier.
n              integer divider
nc             channel (device) number
P              point of examination
P1             first component of the point of examination
P2             second component of the point of examination
P3             third component of the point of examination
---            no data are required

                               --  Error  --

          Restrictions  on  the  data are listed in this column.  The entry
"---" means that no check is made for errors.  The symbol "><"  means  "not
equal".    If  the  error  conditions  cannot  be given explicitly then the
following reference numbers have been used:

          1.    Components  to  be  changed  must not have an index that is
greater than the current dimension.

          2.  The command must be a valid MICROSCOPE command.  If it is not
recognized you will be prompted  for  another  command  to  be  helped  on.
Typing  any valid command will get you some information on it and will then
return you to command mode.

          3.   There must be one vector in legal format in each line of the
list.  If illegal characters are encountered, an error termination  of  the
command  will  occur.  Also, the index number must not exceed the number of
lines in the list.  If it does, the program will reach the end of the  file
containing  the  list,  and  the precise action after that depends upon the
computing system.

                               --  Screen  --

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  54
activ          the command activates the screen

deactiv.       the command deactivates the screen - i.e. the  GO  or  FORCE
               command  must  be given before the computation proceeds. For
               some commands, there is a check if the newly input datum  is
               identical with the old one, in which case the screen remains
               active.

immediate      If  the screen is active then the effects of the command are
               incorporated before the next command is requested

pending        If  the  screen  is  inactive,  this  command  will  put the
               graphical display on the screen, even  if  computations  are
               pending.

---            The graphical and numerical display, and the  screen  status
               are  not  changed.  Notice,  however, that the actual screen
               display    may  be  destroyed  by  error  messages  or  help
               information.  The next display changing command (or RSCREEN)
               will then refresh the screen.

                    4.5  Commands to Control the Display

          In this and the following subsections, input to MICROSCOPE is via
the assigned input channel, unless otherwise stated.  This will usually  be
the terminal, but may also be a file for a batch type session.

ACCENT  mark derivative with asterisks  TOGGLE   k    -1<k<7   immediate
DCENTER draw center of graph. display   TOGGLE   ---    ---    immediate
DGRAPH  draw graph                               k     -1<k<7  immediate
DMNSN   read dimension v of domain               v     0<v<4   deactiv.
DSCALE  draw scale in graphical display TOGGLE   ---    ---    immediate
DXAXIS  draw horizontal axis            TOGGLE   ---    ---    immediate
EGRAPH  erase graph                              k     -1<k<7  immediate
FLIP    replace d by -d                 TOGGLE   ---    ---    immediate
RSCREEN refresh screen                           ---    ---    pending
TCENTER type value of k-th derivative at center   k    -1<k<7    ---
TYPE    type value of derivative at some point   k,is  -1<k<7  immediate

          We now turn to the descriptions of individual commands.    Screen
display  commands  control  what  appears on the terminal screen.  (For the
effects of these commands on the <PLOT79> drawing see section 4.14.)  There
are several subgroups of commands:

        -1- Deciding on the Tangential Derivatives to be Displayed.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  55
          By default, only the display function is displayed.  The graph of
the  display  function  itself  is marked by periods, the graph of its k-th
tangential derivative (k = 1,2, ..., 6) by the digit k.   Using  DGRAPH  or
EGRAPH  respectively,  you  can  turn  on  or  off the graphs of the zeroth
through sixth derivatives.  It is also possible to display no functions  at
all.    In  any  case, the display function is evaluated only at the points
where it is needed.

                         -2- Accentuating a Graph.

          If  you  wish  to  emphasize the graph of a particular derivative
then you can plot its graph using asterisks rather than  a  period  or  the
digit  k.    The command ACCENT turns this option on or off.  Note that the
numerical display contains no direct information on which derivatives  have
been  accentuated.    Also,  if  you accentuate several derivatives at once
their graphs cannot be distinguished from each other.    The  graph  of  an
accented derivative overwrites anything else in the display, except for the
center mark.  The ACCENT command also has the effect of turning  the  graph
of  a  derivative  on,  i.e.    it does not need to be preceded by a DGRAPH
command.  By default no derivative is accented.

                       -3- Drawing a Horizontal Axis

          A  horizontal  axis  can  be  drawn  through  the  center  of the
graphical display, using the command DXAXIS. If desired,  a  scale  can  be
obtained  by using DSCALE. Both commands are on/off switches.  The point at
which the axis or scale intersects the  central  column  of  the  graphical
display  does  not in general correspond to the value zero.  (That point is
different for each of the tangential derivatives plotted, and may not  even
be  contained in the graphical display.) The purpose of the axis is to give
help in examining symmetry properties, and the scale is useful in  locating
points  of  interest for more detailed examination.  Both the scale and the
axis are off by default.

                           -4- Marking the Center

          The  on/off command DCENTER may be used to mark the center of the
graphical display  with  a  plus  sign.    This  is  sometimes  useful  for
confirming symmetry properties.  The center mark is off by default.

                -5- Flipping the Direction of Investigation

          The FLIP command has the effect of  replacing  the  direction  of
investigation  d  by  -d.  This turns the graph of any derivative about the
vertical axis, and it also turns the graph of  any  odd  degree  derivative
about  the horizontal axis, thereby possibly disentangling graphs that have
been overwritten by others.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  56
          Consider  for  example  the  exponential  function  and its first
derivative.  Ordinarily the two  graphs  would  be  identical,  yielding  a
display in which the display function is completely covered by the graph of
its first derivative:

                               I     :     I                            111
                               I     :     I                         111
                               I     :     I                     1111
                               I     :     I                  111
                               I     :     I              1111
                               I     :     I          1111
                               I     :     I      1111
                               I     :     I  1111
                               I     :   11111
                               I    11111  I
                              111111 :     I
                        111111 I     :     I
                 1111111       I     :     I
         11111111              I     :     I
111111111                      I     :     I
===========================================================================
Point            =    0.000000D+00  s  =   1.6667D-02
Direction        =    1.000000D+00  h  =   1.0000D-01
F0 ( 5.40D-01, 1.85D+00) F1 ( 5.41D-01, 1.86D+00)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2424

                        Figure 25 An Invisible Graph

          After using the FLIP command one obtains:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  57
...                            I     :     I                     1111111111
   ...                         I     :     I              1111111
      ....                     I     :     I       1111111
          ...                  I     :     I1111111
             ....              I     : 11111
                 ....          I  11111    I
                     ....    11111   :     I
                        11111  I     :     I
                    1111     .....   :     I
                1111           I  .....    I
             111               I     : ......
         1111                  I     :     I ......
      111                      I     :     I       .......
   111                         I     :     I              ........
111                            I     :     I                      .........
===========================================================================
Point            =    0.000000D+00  s  =   1.6667D-02
Direction        =   -1.000000D+00  h  =   1.0000D-01
F0 ( 5.40D-01, 1.85D+00) F1 (-1.86D+00,-5.41D-01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2424

                     Figure 26  The Disentangled Graphs

where the two graphs are now clearly visible.

                      -6-  Obtaining Numerical Values

          The  alphanumerical  display  does  not provide precise numerical
values.  Values of any computed derivative to 21 digits may be obtained  by
using  the  TCENTER  or  the  TYPE command.  TCENTER provides values at the
center of the display, TYPE does so for any point  in  the  display.    For
TYPE,  measure  the  distance  in  columns form the center of the graphical
display, positive to the right and negative to the left.  For  clarity,  if
the screen version of MICROSCOPE is employed, the column in which the value
is read is briefly marked with exclamation marks.    Returning  to  command
mode  requires  typing  a  carriage  return.  This is necessary so that the
prompt for the next command does not overwrite  the  numerical  information
before it can be read.

          Only derivative values that have been previously computed can  be
read.    This  includes  all derivatives through [k] where k is the highest
degree of a derivative that has been previously displayed  on  the  current
active screen, and [k] is k+1 if k is odd or k if k is even.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  58
                         -7- Refreshing the screen

          The command RSCREEN has two distinct applications:

          On  an active screen, it serves to refresh the screen image after
it has been destroyed e.g.  by a system message or by HELP information.

          On  an  inactive  screen,  the  last  few commands instead of the
alphanumerical display are shown.  In that  situation,  RSCREEN  calls  the
display  onto  the  screen  without  carrying  out  any computations.  Thus
changed parameters may be shown in the  numerical  display  without  having
been  incorporated into the graphical display.  This condition is indicated
by the flag "GO pndg" in the numerical display.  (If the screen  is  active
then  the  flag "current" is displayed instead).  The second application is
useful if the alphanumerical display has to be viewed in order to decide on
the next command.

          When entering MCRSCP the screen is inactive.

                     -8-  Setting the Domain Dimension

          The DMNSN command informs MICROSCOPE of the number of independent
variables (1,2 or 3).  It  is  listed  here  because  it  does  affect  the
numerical  display.  However, this command is usually given at most once at
the beginning of the MICROSCOPE session.    The  default  dimension  is  2.
DMNSN also resets the point of examination, the direction of investigation,
the cross direction, and the order of the cross derivative to their default
values.

             4.6  Commands to Control the Point of Examination

IINTVL  read endpoints of line of investig.      A,B    A><B   deactiv.
IPOINT  read the new point of examination         P     ---    deactiv.
LPOINT  load a new point of examination           kp     3     deactiv.
P1CHPNT read first component of P                 P1    ---    deactiv.
P2CHPNT read second component of P                P2     1     deactiv.
P3CHPNT read third component of P                 P3     1     deactiv.
RPOINT  read channel number for point list        nc    ---      ---
SHIFT   shift point of examination                is    ---    immediate

          The simplest way of defining the point of examination is to  read
it  from  the  input  device  by  using  the  IPOINT  command.   Individual
components may be defined similarly by using the commands P1CHPNT,  P2CHPNT
or P3CHPNT.

          Sometimes it is useful to generate a list of possible  points  of
examination  before the MICROSCOPE session, and then refer to them by their
position (i.e.  line number)  in  the  list,  rather  than  by  typing  the
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  59
individual  components.    This is facilitated by the LPOINT command, which
prompts for the position of the point and  then  reads  it  from  a  device
(usually  a  file)  with  a  device  number that has been set by the RPOINT
command (the default is zero).  All point loading devices must contain  one
vector per line.

          The SHIFT command can be used to shift the graph by  a  specified
number  of  columns to the right (if the number is positive) or left (it is
negative).  There is no restriction on the number of columns  by  which  to
shift  the  graphs.    In  particular,  the number may exceed the number of
columns in the display.

          It  is  also possible to define the part of the domain that is to
be  shown  in  the  display  by  defining  its  two  endpoints.    This  is
accomplished  by  the  IINTVL  command,  which will prompt for the left and
right endpoint (in that order) of the graphical display.  These have to  be
separated  by  at  least  one  line  feed.    Notice  that  IINTVL  defines
simultaneously the point of examination, the  direction  of  investigation,
the discretization parameter, and the display interval.

          4.7  Commands to Control the Direction of Investigation

D1CHDIR read 1st component of dir. of inv.       D1     D><0   deactiv.
D2CHDIR read 2nd component of dir. of inv.       D2    D><0;1  deactiv.
D3CHDIR read 3rd component of dir. of inv.       D3    D><0;1  deactiv.
IDIRCTN read the direction of investigation      D      D><0   deactiv.
LDRCTN  load a new direction of investigation    kd      3     deactiv
NORMAL  turn normalization of D on/off  TOGGLE   ---    ---    deactiv.
RDIRCTN read channel number for direction list   nc     ---      ---
ROTATE  change direction of investigation        DD     D><0   deactiv.

          The direction of investigation can be read from the input  device
by  using  the command IDIRCTN. Individual components can be changed by the
commands D1CHDIR, D2CHDIR or D3CHDIR.

          Similarly  to  the  point  of  examination,  the  direction    of
investigation may also be defined by giving its position in a  list.    The
command  LDRCTN  loads  the  direction from the list (usually a file) whose
channel number has been defined by the RDIRCTN command.

          A new direction may also be defined by rotating the old one.  The
command ROTATE will read  the  difference  between  the  old  and  the  new
direction,  and  update  the  direction.    This  is  sometimes  useful for
examining the effects of deviating slightly from the previous direction  of
investigation.

          The numerical  display  will  always  contain  the  direction  of
investigation as it has been input to MICROSCOPE.  Internally the direction
of the derivative (i.e.  the vector d in the differentiation  formulas)  is
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  60
usually the given direction divided by its Euclidean length.  This leads to
the standard definition of a directional derivative.  However, sometimes it
is  more  useful  to use the unnormalized direction for the differentiation
(i.e.  to have  d  identical  to  the  displayed  numerical  value).    The
normalization  can  be turned on or off using the command NORMAL, and is on
by    default.    Normalization  changes  the  values  of  the  directional
derivatives,  and  the domain that is covered by the graphical display.  An
identical graphical display (but with different numerical  values)  can  be
obtained  by  dividing  the  display  interval  instead  of  the  specified
direction of investigation by the same factor.

    4.8  Commands to Control Accuracy, the Window, and Round-Off Effects

CWINDOW change window width by factor     SIGN   m      m=0    immediate
DIVIDE  divide h by integer m             SIGN   m      d><0   immediate
DOUBLE  double h                                 ---    ---    immediate
HALVE   halve h                                  ---    ---    immediate
IHVALUE read value of h                          h      h>0    deactiv.
MULTPLY multiply h by factor m            SIGN   m      m><0   immediate
ZOOM    enlarge central portion of displ. SIGN   m     m><0   immediate

          This  group  of  commands  controls  the  three   parameters    h
(discretization parameter), s (the display interval),  and  w  (the  window
width) which are related by w = 2h/s (w must lie in the interval [1/16,576]
and can assume only certain rational values).  Each of the commands changes
two  of  the three parameters, leaving the third constant, according to the
following table:

                    Parameter left constant
          w                  s                 h

       DIVIDE             CWINDOW             ZOOM
       DOUBLE
       HALVE
       IHVALUE
       MULTPLY
                Table of Discretization Controling Commands

          Most  frequently,  the  window  width  is  left  unchanged, often
throughout the entire MICROSCOPE session.  This accounts for the  abundance
of commands covering that case.

          The command IHVALUE serves to define an entirely new value of the
discretization parameter (and the display interval).

          Often you will want to modify the current value of h,  e.g.    to
get  rid  of  the influence of round-off errors, or perhaps to increase the
accuracy of numerical values.  Due to the organization of MICROSCOPE it  is
particularly  efficient  (i.e.    requires  few  evaluations  of  the trial
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  61
function) if h is multiplied or divided by powers of 2.  The  factor  2  is
used  so frequently that two specific commands (HALVE and DOUBLE) have been
provided for this case, which require no arguments.

          Multiplications  or  divisions  with other integer factors can be
accomplished by using the commands MULTPLY and DIVIDE respectively.  It  is
possible  to  reverse  the  meaning  of  the  commands by entering negative
factors (e.g.  MULTPLY followed by -3 is equivalent to DIVIDE  followed  by
+3).    This is due more to the internal workings of MICROSCOPE than to any
attempt to provide a truely meaningful convenience.

          The  command  CWINDOW  changes  the  current  window width by the
specified factor.  A positive factor corresponds  to  an  increase  of  the
window  width,  a  negative  one  to a decrease.  The change is obtained by
altering the value  of  the  discretization  parameter  while  leaving  the
display interval fixed.

          The command ZOOM has a similar effect.  However,  it  alters  the
display  interval  and leaves the discretization parameter unchanged.  This
is useful when operating close to the round-off level with  a  value  of  h
that  must  not  be  decreased.  On the other hand, if round-off errors are
irrelevant then the CWINDOW command should  be  used  because  it  is  more
efficent.

          The primary purpose of the commands described  here  (other  than
IHVALUE  is  to  alter  the display while the screen is active.  If several
commands are given while the screen is inactive  only  the  last  one  will
actually  be implemented.  If several changes are to be affected before the
trial function is evaluated, then this can be accomplished by  erasing  the
graphs  of  all  derivatives,  and  then activating the screen (using GO or
FORCE), and making the desired changes.

          For  the  following illustration it is assumed that the screen is
activ derivatives through second order have just been displayed, 79 columns
are being carried in the graphical display, and the current window width is
12.  The table below gives the additional  number  of  evaluations  of  the
display  function  needed  to  accomodate changes by factors 2,3,...,8.  An
entry "--"  indicates  that  the  change  is  impossible  (e.g.    repeated
applications  of the HALVE command can only accomplish changes by powers of
2).  Entries  in  parentheses  indicate  that  the  change  has  led  to  a
non-integer half window width and therefore is unlikely to be employed.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  62
             2        3        4        5        6        7        8

DIVIDE      46       91       68       91       76       91       80

MULTPLY     46       60       68       91       76       91       80

DOUBLE      46       --       92       --       --       --      138

HALVE       46       --       92       --       --       --      138

IHVALUE     91       91       91       91       91       91       19

CWINDOW     12       24       36       48       60      163       84
(increasing)

CWINDOW      0        0      (82)    (237)       0     (237)    (237)
(decreasing)

ZOOM        52       76       96      139       151     163      154
(increasing)

ZOOM        40       52     (116)    (182)      66     (198)    (204)
(decreasing)

                          Table: Relative Efforts

                     4.9  Commands to Control Execution

EXIT    return to calling program                ---    ---    deactiv.
FORCE   recompute everything                     ---    ---    activ
GO      compute whatever is needed               ---    ---    activ
QUIT    terminate MICROSCOPE session             ---    ---      ---
RESTART reestablish earlier parameter settings   ---    ---      ---
SETDF   reset defaults                           ---    ---    deactiv.
STORE   store current parameter settings         ---    ---      ---
UNDO    undo previous parameter changes          ---    ---      ---
WAIT    make program wait for GO or FORCE com.   ---    ---    deactiv.

          To activate an inactive screen the GO or the FORCE  command  must
be used.  GO assumes that previous function evaluations are still valid and
FORCE reevaluates the trial function at all  needed  points  regardless  of
prior  evaluations.  Ordinarily GO will be used for the sake of efficiency,
but the FORCE command is necessary if changes  have  been  applied  to  the
trial  function  (either after leaving MCRSCP or by using the USER command)
that invalidate the earlier evaluations.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  63
          Usually,  the  command  QUIT  is  used  to terminate a MICROSCOPE
session.  That command leads to a simple FORTRAN STOP statement.   However,
it is possible to leave the routine MCRSCP via the EXIT command (leading to
a RETURN statement), and then call MCRSCP  again,  perhaps  after  changing
some  screen  parameters.    After  reentering  MCRSCP, these will again be
checked for consistency, and the screen will be marked inactive.   However,
the  defaults  will  not be set, so that it is possible to return to MCRSCP
and find everything as it has been left with the exception of what you  may
have  reset  yourself between MCRSCP calls.  After reentering MCRSCP it may
be necessary to use FORCE instead of GO to avoid peculiar displays  due  to
altered screen parameters.

          The recommended way of changing problem defining parameters (e.g.
selecting  a  new  trial  function) is to use the command USER (see section
4.15).

          Usually  the screen is set inactive by some drastic change of key
parameters    such  as  the  point  of  examination  or  the  direction  of
investigation.  It can also be set inactive by using the command WAIT. This
option is particularly useful in the  scrolling  version  when  it  may  be
convenient  to  effect  several  changes  before scrolling the display just
once, rather than having it scrolled after each individual command.

          The  state  of a MICROSCOPE investigation can be stored using the
command STORE, and later restored using the command RESTART.  STORE  writes
the  values  of  all  relevant  parameters onto the Restart Device and then
rewinds that device.  Thus, if the command STORE  is  given  several  times
only  the  status during the last issue of the command can be restored.  If
it is necessary to store several data settings, then  the  restart  channel
number  has  to be changed by using the CCHANNL command (see section 4.13),
or a different file has to be assigned to it by the command USER.

          If  desired, some of the default settings can be reestablished by
using the SETDF command.  More precisely, the effects of SETDF are:

   -1- The screen is deactivated

   -2- All previous function evaluations are discarded

   -3- The window width w is set to 12

   -4- Only the display function itself is flagged to be plotted

   -5- Any cross derivatives are turned off

   -6- The discretization parameter h is set to its default value (1D-4)

   -7- The x-axis, center mark, and horizontal scale are all turned off

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  64
   -8- If the test package has been loaded (see Appendix III) then
       the test function is reset to its defaults (N = 1, D = 10,
       no exponential is added).

          While  the screen is inactive, it may be possible to recover from
an erroneous command using the command UNDO. This has  an  effect  only  on
quantities set after the last GO or FORCE command, and resets them to their
values prior to that command.  The following  parameters  are  reset  (i.e.
any change is undone):

   -1- The point of examination

   -2- The direction of investigation

   -3- The left and right endpoints of the investigation interval

   -4- The value of the discretization parameter h

   -5- The window width w

   -6- The number of independent variables

   -7- Marking the center point

   -8- Drawing a horizontal scale

   -9- Drawing a horizontal axis

  -10- Selection of graphs to be plotted

          Note that  any  changes  regarding  a  cross  derivative  or  the
normalization of the direction of investigation are not undone.

                    4.10 Commands to Obtain On-Line Help

HELP    obtain detailed help on command cmd      cmd     2       ---
HSUMRY  obtain a summary of all commands         ---    ---      ---
LIST    print all currently available commands   ---    ---      ---
NEWS    print the news                           ---    ---      ---

          The quickest way of obtaining information on possible commands is
the  command  LIST  which  will  print  a  list  of all currently available
commands on the screen.  More detailed information on all commands  can  be
obtained  through  the HSUMRY command which prints the table in section 4.3
reorganized by topics.

          Information on a specific command can be obtained by typing HELP,
followed by the name of the command you want  help  on.    MICROSCOPE  will
print  not  only  a  short description of the command, but also the current
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  65
values of those parameters that are affected by the command.  Thus if,  for
example,  you  wish  to  find  out  what  the current number of independent
variables is you can request HELP on DMNSN.

          The  command  NEWS will print a text that may change from time to
time and will also depend on your particular installation.  At the time  of
this writing the "news" are a very brief primer on MICROSCOPE.

          Finally, if you type a  question  mark  to  MICROSCOPE,  it  will
invite  you  to  enter  a  command,  and  will  suggest  HSUMRY and LIST as
possibilities.

                       4.11 Commands to Keep a Record

LOG     give channel number for logging          nc     ---      ---
OUTPUT  write screen immage on recording device  ---    ---      ---
TNOTE   take a note on recording device          text   ---      ---

          Results  obtained  with MICROSCOPE can be recorded permanently on
the Record Device.  The command TNOTE will copy any text you  type  on  the
Input  Device until it encounters the string 'EC' (End Comments, both E and
C must be capital) in columns 1 and 2.  It then returns  to  command  mode.
The  length  of text lines may be up to 80 columns or the number of columns
specified for the graphical display, whichever is larger.  Trailing  blanks
are stripped, to make the record file more compact.

          The command OUTPUT causes MICROSCOPE  to  write  a  copy  of  the
graphic  and  the numerical display onto the recording device.  This manual
is generated by using TNOTE and  OUTPUT  throughout  a  lengthy  string  of
MICROSCOPE commands.

          There is also a logging device which is  active  if  its  channel
number is different from zero (it is inactive by default).  The command LOG
sets the logging device number.  If the  device  is  active  all  commands,
data, displays, and notes are recorded on it.

                 4.12 Commands to Analyze Cross Derivatives

C1CROSS read 1st component of cross direction    C1     C><0   deactiv.
C2CROSS read 2nd component of cross direction    C2    C><0;1  deactiv.
C3CROSS read 3rd component of cross direction    C3    C><0;1  deactiv.
CDIRCTN read direction of cross direction        C      C><0   deactiv.
CHVALUE read ch for cross differentiation        ch      5     deactiv.
CORDER  read order of cross derivative           k     -1<k<7  deactiv.
LCROSS  load a new cross direction               kc      3     deactiv
RCROSS  read channel number for cross list       nc     ---      ---

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  66
          Cross  derivatives,  like  all  derivatives  in  MICROSCOPE,  are
calculated  using numerical differentiation.  The formulas are analogous to
those given for tangential derivatives.  In  general,  the  cross  stencils
will  have  no points in common.  Therefore, one evaluation of a k-th order
cross derivative requires k+1 evaluations of the trial function.

          By  choosing  the cross direction to be parallel to the direction
of investigation the range of tangential derivatives can  be  shifted  from
[0,6]  to  [k,6+k].   This situation, however, is not treated separately by
MICROSCOPE and does not lead to savings in function evaluations.

          The  commands  controlling  the  cross  derivative  (if  any) are
similar to those controling the direction of investigation.  By default, no
cross  derivative is computed.  It is activated by reading a non-zero order
of the derivative, using CORDER, or by defining  a  cross  direction  using
CDIRCTN  (which  reads  the  cross direction), C1CROSS, C2CROSS, or C3CROSS
(which read individual components), or LCROSS which loads a cross direction
from a channel defined by RCROSS (the default channel number is zero).  The
default order is 1 if the cross derivative is activated by setting a  cross
direction.    If it is activated by setting the order its default direction
is the vector with all of its components equal to 1.

          The  cross  discretization  parameter ch is either set explicitly
using CHVALUE, or by default, in which case it assumes the  same  value  as
the  tangential  parameter  h  at  the  time  when  the cross derivative is
activated.  For efficiency, later changes of h have no effect on the  value
of the cross parameter.  Note that any change of ch requires a reevaluation
of the display function at all needed points.

          Cross  derivatives  are turned off by setting their order to zero
(using  CORDER).    The  NORMAL  command  has  the  same  effect  on  cross
derivatives as it does on tangential derivatives.

          When plotting cross derivatives it is important to keep  in  mind
that  the  significance  of the window may be blurred if a stencil used for
the cross differentiation, and centered outside of the window,  nonetheless
crosses  the  front.    This  can  be  avoided  either by keeping the cross
discretization parameter much smaller than  the  display  interval,  or  by
choosing the cross direction parallel to the front.

          In the following example, the trial function is

                                  2
                        f(x,y) = x *abs(x)*y*abs(y)

the point of examination is [0,1], the direction of investigation is [1,0],
and the cross direction is [1,-1].  The value of h = 3D-3 and  ch  =  6D-3.
Obviously  the  effects  of  the  discontinuity  in  the  second tangential
derivative are carried beyond the window.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  67

111                            I33333333333I  22222222222222222222222222222
   11                          3     :     I22                       ..111
     11                        I     :     3                      ...11
       11                     3I     :   22I3                 .... 11
         11                    I     :  2  I              ....   11
           11                  I     : 2   I         .....    111
             11              3 I     :2    I.3.......       11
               111          .........2......              11
                  11 .......3  I    2:     I  3         11
                ....11         I  22 :     I         111
            ....      11   3   I 2   :     I       11
         ...            11     I2    :     I   3 11
      ...                 311  2     :     I  113
   ...                   3   221     :     111
33333333333333333333333332222  I11111111111I     33333333333333333333333333
CD: deg =  1 dir = (  1.000000D+00, -1.000000D+00) ch  =   6.0000D-03
Point            = (  0.000000D+00,  1.000000D+00)  s  =   5.0000D-04
Direction        = (  1.000000D+00,  0.000000D+00)  h  =   3.0000D-03
F0 (-7.49D-04, 7.28D-04) F1 ( 1.05D-02, 8.00D-02) F2 (-4.40D+00, 4.18D+00)
F3 (-1.34D+01, 1.00D+03)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2598

                    Figure 27  An Extended Discontinuity

                        4.13 Programming MICROSCOPE

CCHANNL change channel number                    ic,nc   4       ---

PAUSE   pause until RETURN from channel nc        nc    ---      ---

RWIND   rewind device nc                          nc    ---      ---

          Some  rudimentary  programming  of  MICROSCOPE  is possible.  The
basic approach consists of writing a sequence of commands into a  file  and
assigning  it  to the input device.  The various devices can be switched by
using the CCHANNL command.  It will prompt  for  two  integers,  the  first
defining  the  type  of  channel  to be switched, the second giving the new
channel number.  The types are

         1:  Input Device
         2:  Output Device
         3:  Graphics Device
         4:  Recording Device
         5:  Restart Device

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  68
          For  an  explanation  of  these  devices  see section 1.3.  Their
channel numbers are defined originally  by  parameters  passed  on  to  the
routine  MCRSCP  (see  section 3.1).  Upon entering MCRSCP these are copied
into variables that may be changed by CCHANNL. Thus the input parameters of
MCRSCP  are  not changed by that command and assume their old values should
MCRSCP be exited (using EXIT) and  later  reentered  without  changing  its
parameters.

          The loading devices for the point of examination,  the  direction
of  investigation,  and  the  cross  direction can be switched by using the
commands RPOINT, RDIRCTN and RCROSS, respectively.  The Help Device  cannot
be  switched  as the information contained in it is an integral part of the
MICROSCOPE package and is only read  during  a  session.    Indeed,  it  is
advisable  to  protect  the  help  file  against an accidental overwrite if
possible, e.g.  by using a READONLY switch in an OPEN statement.

          Any  channel  can be rewound by the RWIND command.  This facility
can be used e.g.  to regenerate a specific parameter  configuration  or  to
overwrite  previously  generated  information that is no longer needed.  An
infinite loop can be created by putting a rewind command at the end of  the
input file.

          The PAUSE command can be used to view the output of a  MICROSCOPE
program  at  leisure during run time.  It will ask for a channel number and
then suspend computation until a dummy  character  is  received  from  that
channel.  The channel will usually be the terminal.

          Computation by a program can be suspended by changing  the  input
device  to  the terminal (entering interactive mode) and later continued by
switching the input channel back to the appropriate device.

          Note  that  for all of the device handling commands no precaution
has been taken to ensure that only legal channel  numbers  are  given,  and
that appropriate devices are assigned to the channel numbers.

          Comments can be included in a program in two ways.    Firstly,  a
'comment  line' replaces a command line and is marked by a "+" character in
column 1 or 2.  Secondly, any characters contained in  the  space  starting
with  column  3 of a command line are ignored by MICROSCOPE.  This facility
does not exist for lines containing data.  Indeed, any spurious  characters
may lead to the rejection of the data by the parser.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  69
           4.14 The PLOT command for obtaining a <PLOT79> Display

PLOT    enter plotting (<PLOT79>) mode             ---    ---      ---

          The alphanumerical displays usually generated by  MICROSCOPE  are
adequate  to obtain the desired answers to your questions, but they may not
be suitable e.g.  for publications,  reports,  etc.    Depending  upon  the
availability of suitable hard- and software (<PLOT79>, see Beebe, 1979) you
may be able to generate more presentable plots.  This  is  accomplished  by
the  command  PLOT  which generates a drawing of the current alphanumerical
display, augmented by some special options.

          Details  about the link between MICROSCOPE and <PLOT79> are given
in section 5 and your system  manager  may  have  put  out  suitable  local
information in this respect.  For the remainder of this subsection, we will
assume that the <PLOT79> package is available, that you have linked it with
MICROSCOPE  and  your own program, and that you have some suitable plotting
device available.  Appendix IV containes copies  of  black  and  white  pen
plots  corresponding  to the alphanumerical plots scattered throughout this
manual.

          The  command  PLOT  puts  you into the plot submode.  The precise
kind of plot you will  eventually  generate  depends  upon  the  MICROSCOPE
commands given so far, and the specifications you are going to make in plot
mode.

          We  first  discuss  the  PLOT specifications.  After entering the
PLOT submode you will see a list of current options on the screen.  You can
change these options one by one.  After each change an updated list will be
displayed.  To enter an option change enter the  reference  number  of  the
option  followed by the appropriate action (as prompted by the program), to
activate the actual plotting process enter 0, and  to  leave  the  plotting
mode  and  return  to  command  mode  without  plotting  anything enter any
negative number.  The list of PLOT options is left unchanged between  calls
to PLOT.

          There are 12 PLOT options:

                        -1-  Title (Default: blank)

          A  title  printed above the alphanumerical display, consisting of
up to 72 characters can be drawn.

                        -2-  Legend (Default: blank)

          A  string  of  text  printed  below  the  alphanumerical display,
consisting of up to 72 characters can also be drawn.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  70
          For  both the title and the legend, a default character height is
provided which will be decreased automatically  if  insufficient  space  is
available.

                    -3- Labeling of graphs (Default: ON)

          If ON, labels are drawn giving the degree of  the  derivative  of
each  graph.    On a crowded display, these are sometimes awkwardly placed,
and marking the graphs (option 4) may be preferable.

                    -4- Marking of Graphs (Default: OFF)

          If  ON,  each  point  at which a derivative has been evaluated is
marked with a special symbol, similarly to the  graphical  display  on  the
termina The symbols for the k-th derivative are

k:          0      1       2         3      4     5         6
Symbol:    dot   plus   asterisk   circle   x   square   triangle

          Marking the graphs instead of labeling  them  has  the  advantage
that  it  is  possible  to  tell  from any small part of the graph to which
derivative it corresponds, making it unnecessary to trace a graph from  the
point of interest to its label.  It has the disadvantage that it slows down
significantly the speed  with  which  the  graphs  can  be  drawn.    Also,
accentuating a graph is only possible with the marking on (see below).  The
marking symbol is repeated in the numerical display if the  marking  option
is  on,  enabling  easy  association  of  marks  and  degrees of tangential
derivatives.

                -5-  Drawing the plot in color (Default: ON)

          The  graph  of  the tangential derivatives can each be drawn in a
different color, if supported by  the  existing  hardware.    In  the  most
extreme  case,  when all derivatives are to be plotted in different colors,
seven pens for their graphs plus an eighth pen for the  numerical  display,
scales, axes, etc.  must be supplied.

          MICROSCOPE selects a pen by calling  a  routine  SETPEN(I)  where
I = 1  corresponds  to the pen drawing the axes etc., and I > 1 corresponds
to the graph of the (I-2)th tangential derivative (I =  2,3,...,8).    This
range  of  I  has to be translated into the appropriate <PLOT79> range.  On
some installations the pens are numbered 0 through 7, on others from  1  to
8.    The  appropriate SETPEN routines are contained in the files PEN07 and
PEN18, respectively (see section 5).  If only a smaller range  of  pens  is
available  you  may want to write your own pen selection routine, tailoring
it  perhaps  to  the  specific  range  of  derivatives  in  which  you  are
interested.  Your routine must be of the following form:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  71
      SUBROUTINE SETPEN(I)
      INTEGER I,J
C I is in the range from 1 to 8
      J = some function of I
C J is in the range of pens available
C on the local plotting device
      CALL STPEN(J)
      RETURN
      END

          The subroutine STPEN is  a  MICROSCOPE  routine  that  calls  the
<PLOT79  routine SETPN(J) if the value of J has changed since the last call
to STPEN. SETPEN is not referenced if the color option is turned off.

          In  the  numerical  display,  the  ranges  of   the    tangential
derivatives are drawn in the same colors as their graphs.

          Using  color  makes  for very nice drawings, but for reproduction
purposes it may be preferable to use black and  white  (like  the  <PLOT79>
drawings in Appendix IV).

                 -6-  Drawing a page number (Default: None)

          A large and prominent integer can be drawn below the legend.   We
have  found  this  useful,  for example, for associating a drawing with the
reference number of a point in a list (e.g.  the point of examination), and
associating or defining a figure number (like in this manual).

          No page number is drawn if its value is zero.

                   -7-  Left bottom label (Default: none)

          A  label of up to 20 characters of small type can be drawn in the
left bottom corner of the plot.

                  -8-  Right bottom label (Default: none)

          A  similar  label  can be drawn in the right bottom corner of the
plot.

                          -9-  Time (Default: off)

          The  time at which the plot was generated can be drawn in the top
left corner of the plot.

                         -10-  Date (Default: OFF)

          Similarly,  the  date  of the plot generation can be drawn in the
top right corner.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  72

          Both  time  and  date  are printed in the same size as the bottom
labels.  They are sometimes useful for identification and record keeping.

                   -11-  Numerical Display (Default: ON)

          If  desired,  the  numerical  display can be turned off.  This is
sometimes useful to obtain quick drawings.

                         -12-  Frame (Default: ON)

          If  desired,  the  frame that is normally drawn around the entire
<PLOT79> drawing can be turned off.

          We  now  turn  to the MICROSCOPE options.  Essentially everything
that appears in the alphanumerical screen display is also contained in  the
<PLOT79> drawing, although it may assume a slightly different form.

                            -1- Horizontal scale

          If a horizontal scale is activated (by the DSCALE command) then a
standard  labeled  horizontal scale is drawn on the bottom of the graphical
<PLOT79> drawing.  The labels on the scale give the distance from the point
of  examination  in  units  of the direction of investigation.  Notice that
this may be the normalized version of the direction given in the  numerical
display,  depending  on  whether the normalization option is on.  If it is,
then the scale in the <PLOT79> drawing gives the  Euclidean  distance  from
the point of examination.

                                 -2- x Axis

          A horizontal line is drawn through the center  of  the  graphical
display  if  the  x  axis  is  turned on (using DXAXIS).  This is sometimes
useful for illustrating symmetry properties.

                   -3- Marking the center of the display

          If  this  option  is  turned on (using DCENTER) the center of the
graphical display is marked with a cross.

                          -4- Accentuating a graph

          If  a  graph  is to be accentuated its marks (as discussed above)
are drawn twice their normal size.   However,  if  color  is  available,  a
better emphasis can usually be obtained by using a special color.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  73
                           4.15 User Intervention

USER    enter user mode                          ---    ---      ---

          Upon receiving the command USER, MICROSCOPE  calls  a  subroutine
SUBUSR  which  is  often  a dummy routine, but which can be written to suit
special purposes.  SUBUSR has no parameters, but it  can  communicate  with
MICROSCOPE  routines  or your own routines via COMMON blocks.  In utilizing
this facility it is important to keep in mind  that  ordinarily  MICROSCOPE
has  no  means  of determining that the trial function has changed and that
previous evaluations of it are no longer  valid.    Therefore  the  command
FORCE may have to be used rather than GO.

          Five examples of possible applications follow:

                       -1- Mixed partial derivatives

          If  derivatives  other  than  pure tangential derivatives of pure

cross derivatives are to be examined this can be accomplished  by  defining
the  trial  function to be the derivative that is to be displayed, or to be
further differentiated, and make it  dependent  upon  parameters  that  are
modified by SUBUSR as needed.  In this context, it may be convenient to use
the routine

      DOUBLE PRECISION FUNCTION DERIV(F,NDIM,P,IORDER,DIR,H)
      DOUBLE PRECISION F,P(1),DIR(1),H
      INTEGER NDIM,IORDER
      ...
      RETURN
      END

which  computes at the point P the IORDERth derivative in the direction DIR
of the double precision function F, using the formulas given in section 1.2
with  the  discretization  parameter  H. F must be declared EXTERNAL in the
calling program, and is of the same form as the trial function described in
section  3.1.  NDIM is the number of independent variables F depends on and
must not exceed 3.  DERIV is used within MICROSCOPE (to compute  any  cross
derivatives) and can therefore be readily called by your own programs.

          Obviously, the modified trial function may itself be a tangential
derivative.  Then the range of derivatives that can be displayed is shifted
from the normal 0th through 6th order to a higher one.

                       -2- Switching Trial Functions

          If  several  trial  functions  are to be investigated in a single
session (or with a single linking and loading  process)  they  can  all  be
written  into  one  DOUBLE  PRECISION  FUNCTION,  and  distinguished  by  a
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  74

parameter that is passed in a common block, and  that  may  be  altered  by
SUBUSR.  The  examples  in  this  manual  are  handled  in this manner (see
appendix III for details).

                      -3- Switching Data or Parameters

          Often the trial function depends upon data or parameters that can
be changed by SUBUSR without having to leave MCRSCP.

                             -4- File Handling

          File handling is system dependent.  You may find it convenient to
handle the assignments of files or devices to channel numbers via USER.

                           4.16 Default settings

          In  this subsection, E denotes a vector of 1 to 3 components that
are all equal to 1.  The default settings for MICROSCOPE are as follows:

 Number of independent variables: 2

 Point of examination: 0 (the origin)

 Direction of Investigation: E

 Discretization parameter: 1D-4

 Window width: 12

 Cross direction: E

 Order of Cross Derivative: 0 (no cross derivative)

 Order of Tangential Derivatives to be displayed:  0

 No scale or x axis is drawn, the center of the display is unmarked, and
no derivative is accentuated.

 PLOT options: see section 4.14

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  75
                           5. Installation Guide

                        5.1 Description of the Package

          In  this  section,  which  is directed mainly to the local system
manager, we describe the files supplied with the  MICROSCOPE  package,  and
how  they  can  be put together.  Usually, it will be the best procedure to
select or write files that generate the most powerful and convenient  local
version  of  MICROSCOPE, to put them into one file or a library and to make
the appropriate information available to your local users.

          MICROSCOPE  is a portable set of FORTRAN routines.  The user must
supply a main program and one or two subroutines that are specific  to  the
application.    Thus  users  must  have  access to at least the relocatable
versions of a suitable subset of MICROSCOPE, if not the source codes.

          You  should  have obtained a magnetic tape containing 21 files in
the following sequence:

            1.  HELPLC    (902)
            2.  HELPUC    (902)
            3.  LC        (1889)
            4.  MAIN      (48)
            5.  MANLC     (5150)
            6.  MANUAL    (7456)
            7.  MANUC     (5150)
            8.  PEN07     (9)
            9.  PEN18     (8)
            10. PENDMY    (3)
            11. PLTDMY    (169)
            12. PLTLC     (978)
            13. PLTUC     (980)
            14. POS       (14)
            15. SCREEN    (89)
            16. SCROLL    (86)
            17. SUPPRT    (3894)
            18. UC        (1862)
            19. USRDMY    (8)
            20. USRLC     (271)
            21. USRUC     (270)

          Numbers in parentheses give the number of  lines  (of  up  to  80
characters each) in the files.

          Below, the files are divided into several groups.    One  or  two
files  have  to  be  picked  from each of the groups 1 through 6.  Within a
group,    files  are  listed  by  decreasing  convenience,  and  increasing
portability.    If the bottom files are chosen from each group a completely
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  76

portable version of MICROSCOPE (except for the use  of  a  few  non-FORTRAN
characters, namely ?,<,>,!,:,;) is obtained.

                    -1- Case Dependent Support Routines

          LC:   Contains those subroutines  that  require  the  support  of
lower  case  letters  in  order  to  work  properly.    This feature is not
portable, but widely available, and greatly increases  the  convenience  in
using MICROSCOPE.

          UC:   To be used in case of LC, if lower  case  letters  are  not
available.    UC  is  supplied  as  part of the package, but it can also be
generated from LC by replacing all lower case letters with their upper case
equivalents,  and  by  replacing  the  subroutine  LCUC by a dummy routine.
(Upper case versions of all other files can be generated from  their  lower
case  counter  parts  by  replacing  lower  case  letters by uppercase ones
everywhere.  The leading comments describing the file  will  of  course  no
longer apply.)

          If UC is used in case of LC all output  will  be  in  upper  case
letters, and lower case input will not be recognized.

          LC and UC contain their respective versions of the master routine
MCRSCP,  which  is  the first routines in each of the two files.  All other
routines then follow alphabetically.

                       -2- Case Independent Routines

          SUPPRT:   This  file contains the bulk of the MICROSCOPE package,
consisting of completely portable routines.

                        -3- The File Access Routine

          POS:   This file contains a

      SUBROUTINE POS(IDEV,N)

which positions the device IDEV at the N-th record,  such  that  subsequent
reading  from  IDEV  yields  the  N-th  record.    This  is accomplished by
rewinding IDEV and then reading a dummy character from the first N-1  lines
(records)  in  IDEV.  If this at all time consuming it may be worthwhile to
replace POS by a faster system dependent routine.

                       -4- The Screen Display Package

          SCREEN:   To  be used if screen editing is locally available, and
highly recommended over its alternative, SCROLL, described below.  To  take
advantage  of  screen  editing, the following four small interface routines

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  77
must be written for each possible  computer/terminal  combination  (in  all
cases, IDEVCE is the channel number of the relevant terminal):

      SUBROUTINE CLSCRN(IDEVCE,I,J)
      INTEGER IDEVCE,I,J
C Clear the screen of the device with number IDEVCE below the point with
C the coordinates (I,J) where I is the horizontal coordinate measured
C from the left of the screen starting at 1, and J is the vertical
C coordinate measured from the top of the screen starting at 1.
      ...
      RETURN
      END

      SUBROUTINE PCURSR(IDEVCE,I,J)
      INTEGER IDEVCE,I,J
C Position the cursor at the position (I,J) of the device with number
C IDEVCE, where I,J are as for CLRSCRN
      ...
      RETURN
      END

      SUBROUTINE PLCHRS(IDEVCE,I,J,N,CHARS)
      INTEGER IDEVCE,I,J,N,CHARS(135)
C Write the string of N characters contained in A1 format in the integer
C array CHARS, starting at the location (I,J).  I,J, and IDEVCE are as
C in CLRSCRN.
      ...
      RETURN
      END

      SUBROUTINE BLSCRN(IDEVCE)
C Blank the screen of the device with number IDEVCE
      ...
      RETURN
      END

   SCROLL:   SCREEN can be replaced with SCROLL if the SCREEN package
cannot be used. This will have the consequence that the entire screen
display is regenerated after each change, rather than just modified.

                           -5- The PLOT package:

          PLTLC:   This file contains the interface between MICROSCOPE  and
<PLOT79>.  The routines use and recognize lower case letters.

          PLTUC:   The equivalent of PLTLC,  but  without  the  lower  case
letters.   Note, however, that <PLOT79> supports Hershey Fonts that include
lower case letters regardless of the computing system.   Hence  the  <PLOT7

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  78
drawings  generated  by  PLTUC  do  contain  lower  case  letters.      The
communication with the terminal via the command PLOT is completely in terms
of upper case letters, however.

          With both the PLTLC or PLTUC package a pen selection routine also
has  to  be  supplied  (see section 4.14).  The MICROSCOPE package contains
three routines in separate files:  PEN18 corresponding to 8 pens labeled  1
to  8,  PEN07 corresponding to 8 pens labeled 0 to 7, and PENDMY to be used
if color is not available (e.g.  on dot matrix printer).  However, you  may
wish  to  leave  it up to the user to select or write his own pen selection
routines.

          PLTDMY:   To  be used if <PLOT79> is not available.  In this case
only alphanumerical screen displays like those shown throughout this manual
can be obtained.  However, the dummy routine simulates the interaction with
<PLOT79> up to the point at which the actual drawing  takes  place.    This
feature  is useful for the development of MICROSCOPE programs, and makes it
possible to run programs without <PLOT79> even if they call the package.

          There is only the upper case version of PLTDMY.

                            -6- The Test package

          Ordinarily, users will not be interested in the specific  routine
SUBUSR  employed in the generation of this manual.  They will want to write
their own.  However, the manual version of SUBUSR, and the routines  called
by it, are contained in the files:

          USRLC:   contains the lower case version.

          USRUC:   contains  the  upper  case  version, to be used if lower
case letters are not available.

          USRDMY:   contains  a dummy SUBROUTINE SUBUSR, which disables the
USER command.  If the MICROSCOPE routines are held in a library it  may  be
possible to keep this dummy routine in it as a standby if the user does not
supply his own version.

                          -7- The <PLOT79> package

          Obviously  the <PLOT79> package must be linked with MICROSCOPE if
it is to be utilized.  This is a large graphics package that can be  easily
interfaced  with  almost  any  graphics  device.   It can be obtained for a
nominal charge  from  Dr.    Nelson  H.F.  Beebe,  Department  of  Physics,
University of Utah, Salt Lake City, Utah 84112, Tel.:  801-581-5254.

                               -8- Data files

                           Sample Driver Program
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  79

          The file MAIN contains the driver program as it was used  in  the
generation of this manual.  It is listed as a data file because the program
needs to be modified to suit local circumstances.  In particular, the  OPEN
statement is not portable.

                           Interactive Help Files

          The package includes two help files that  contain  relevant  help
information  (but  no  code).    Again,  there are the lower and upper case
versions:

          HELPLC

          HELPUC

          One  of  these  files (preferably HELPLC) must be readable by the
user programs, and the users must be informed how to access them.    It  is
possible  to  design  a sequence of MICROSCOPE commands that overwrites the
help file, and, if possible, the user should be denied write access to  it.
You may also want to keep easily accessible backup copies of these files.

          The help files each contain the following items:

          1.    On  the  first  line  there are three integers I,M,N in 3I3
format.  These have the following meanings:   I  is  the  number  of  lines
occupied  by  the  table  of  commands  that can be accessed by the command
HSUMRY. M is the total number of lines occupied by the detailed information
accessed by HELP. N is the number of available commands.

          2.  The next four lines are occupied by N numbers written in 20I2
format.    The k-th such number gives the length (in lines) of the detailed
HELP information on the k-th command.  These N numbers must add up to M.

          3.  The next I lines contain the HSUMRY information

          4.  The next M lines contain the detailed HELP information.

          5.    The  next  line  contains  an  integer  J in I3 format that
contains the number of lines occupied by the news.

          6.  The last J lines contain the news.

                                Manual files

          MANUAL:   containes a verbatim  machine  readable  copy  of  this
manual.  It is written with FORTRAN carriage control and ready for printing
(at 60 lines per page and up to 75 characters per line).    Underlining  is
accomplished  by  having  the  underlines  in  a  separate  line with a "+"
character in the first column, indicating that the line is to overwrite the
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  80
preceding one.  There is no upper case version of this file.  If lower case
letters are not available a xeroxed  copy  of  the  manual  rather  than  a
printed version should be distributed.

          This installation guide is chapter five of the manual.

          MANLC:  This  file  contains  a  version  of  the  manual that is
suitable for on-line reading and editing.  Page breaks and underlines  have
been eliminated, otherwise the text is identical to that in MANUAL.

          MANUC:  The upper case equivalent of MANLC.

                5.2 A Key to Selecting the Appropriate Files

          The  following is a quick key to selecting the appropriate subset
of the above files.  Proceed  by  answering  the  questions  and  following
instructions  until  you  reach  a  line  giving the relevant file names or
descriptions.  The pen selection routine is described in section 4.14  (and
can  be  supplied  by  the  user  if  necessary), all other ingredients are
described in this installation guide.

1. Are lower case letters available on your machine?      Yes GO TO 2
                                                          No  GO TO 3

2. Have you supplied an interface to screen editing?      Yes GO TO 4
                                                          No  GO TO 5

3. Have you supplied an interface to screen editing?      Yes GO TO 6
                                                          No  GO TO 7

4. Is <PLOT79> available?                                 Yes GO TO 8
                                                          No  GO TO 9

5. Is <PLOT79> available?                                 Yes GO TO 10
                                                          No  GO TO 11

6. Is <PLOT79> available?                                 Yes GO TO 12
                                                          No  GO TO 13

7. Is <PLOT79> available?                                 Yes GO TO 14
                                                          No  GO TO 15

8.  LC,  SUPPRT,  POS  or  local  equivalent,  SCREEN, PLTLC, pen selection
routine, possibly USRLC, screen interface, HELPLC, MANUAL, MANLC

9.  LC,  SUPPRT,  POS  or local equivalent, SCREEN, PLTDMY, possibly USRLC,
screen interface, HELPLC, MANUAL, MANLC

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  81
10. LC,  SUPPRT,  POS  or  local  equivalent,  SCROLL, PLTLC, pen selection
routine, possibly USRLC, HELPLC, MANUAL, MANLC

11. LC,  SUPPRT,  POS  or local equivalent, SCROLL, PLTDMY, possibly USRLC,
HELPLC, MANUAL, MANLC

12. UC,  SUPPRT,  POS  or  local  equivalent,  SCREEN, PLTUC, pen selection
routine, possibly USRUC, screen interface, HELPUC, MANUC

13. UC,  SUPPRT,  POS  or local equivalent, SCREEN, PLTDMY, possibly USRUC,
screen interface, HELPUC, MANUC

14. UC,  SUPPRT,  POS  or  local  equivalent,  SCROLL, PLTUC, pen selection
routine, possibly USRUC, HELPUC, MANUC

15. UC,  SUPPRT,  POS  or local equivalent, SCROLL, PLTDMY, possibly USRUC,
HELPUC, MANUC

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  82
                   Appendix I: Numerical Differentiation

          In  this  appendix, we will discuss in some detail the properties
of the formulas listed in section 1.2.    Without  loss  of  generality  we
assume  the  point  of  examination  is  the  origin.  We also restrict our
attention to purely tangential derivatives.  Thus we may  assume  there  is
only  one  independent  variable.    Of  particular  interest   are    step
discontinuities   in  certain  derivatives  (for  other  types  of  reduced
smoothness  see the examples at the end of Appendix III).  Thus we consider
the trial function

                         F(x) = PHI(x) + S(m,eta,x)

where  PHI(x)  is a smooth function (i.e.  all its relevant derivatives are
continuous)  and  S  is  determined  by  the  requirements  that  its  m-th
derivative be piecewise constant and have a jump discontinuity of magnitude
eta at x = 0.  Explicitly, S is defined by

                                               m
              S(m,eta,x) = 0 if x < 0 and eta*x /m! otherwise

where the exclamation mark denotes the factorial.

          To simplify matters we will assume S is  evaluated  exactly,  and
all  round-off  errors  occur  in  PHI.  The  properties  of  the numerical
differentiation formulas depend very critically on the  relative  sizes  of
the  derivatives of PHI, about which little can be assumed in general.  Our
approach will be to derive general formulas incorporating the  derivatives,
but to illustrate the relevant phenomena by using

                                          x
                                PHI(x) = e

since the derivatives of the exponential are all  identical  (assuming  the
normalization option is on).

          We will denote  the  degree  of  a  derivative  by  parenthesized
superscripts.

          A simple calculation shows that, for k >=  m,  the  approximation
 (k)     (k)
Q    of f    at x = 0 is given by the fundamental equation

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  83
  (k)      (k)
 Q    = PHI                                     true value

         2           (k+2)
      + h *gamma *PHI                           truncation error
                k
                                                                    (1)
             -k
      + tau*h  *(1+abs(PHI))*alpha              round-off term
                                  k

                      m-k
      + eta*delta   *h                          delta term
                 m,k

          If k < m the delta term is absent.   We  discuss  the  individual
terms in turn:

          - The true value

          This  is  the  expression  which  we  are  trying to approximate.
   (k)
PHI    is evaluated at zero.

          - The truncation error.

          This term can be obtained by expanding the error  into  a  Taylor
series  about h = 0, as is done in any textbook on numerical analysis.  The
            (k+2)
function PHI      is to be  thought  of  as  having  been  evaluated  at  a
suitable  (unknown)  point  in  the  domain of the display.  The gamma  are
                                                                      k
constants given in table 1.

          - The round-off term

          We assume rounding is taking place as  described  in  section  0,
i.e.    if  x  is  the  quantity  to be rounded to D digits, say, then x is
replaced by

                             -D             -D
              z := (1+eps *10  )*x + eps *10              (2)
                         1              2

where eps  and eps  are random numbers between -1 and +1.  The quantity tau
         1        2
in (1) is a suitable average of the eps  and eps  terms in (2).    We  will
                                       1        2

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  84
            -D
set it to 10  .  The function PHI is again evaluated at a suitable point in
the display, and the alpha  are the sum  of  the  absolute  values  of  the
                          k
coefficients  in the k-th differentiation formula.  Their values are listed
in table 1.

          - The delta term.

          We use  the  expression  "delta  term"  because  it  arises  from
differentiating the step function s(m,eta,x), and the first derivative of a
step function is a Dirac delta function.  The delta    are  constants  that
                                                   m,k
can  be  read off the MICROSCOPE plots in section 4.2.  They are also given
in table 1.

   k  alpha   gamma                      delta
           k       k                          m,k
                         m =  0     1     2     3     4     5     6

   1       2     1/6          1/2   1     -     -     -     -     -

   2       4     1/12          1    1     1     -     -     -     -

   3      24     1/16          4    2     1     1     -     -     -

   4     256     1/24         48   16     3     1     1     -     -

   5    2430     1/27        365   81    14     3     1     1     -

   6   46656     1/36       7290 1458   146    27     4     2     1

              Table 1:  Constants for Differentiation Formulas

          We now address three questions:

          1.  When do round-off effects become visible?

          2.  When do round-off effects exceed the truncation error?

          3.  How small a discontinuity can be detected with MICROSCOPE?

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  85
                        I.1 The Round-Off Threshold

          We  are  concerned  with  the  question of when round-off effects
begin to obscure the graph of a derivative.  More precisely,  we  ask  when
the  round-off  term  becomes larger than a certain fraction of the rise in
                               (k)
the graph of the derivative PHI    over  an  interval  of  length  s.    An
equation  for  the critical step size, which constitutes a limit on h below
which no clear graphs can be obtained, is generated by ignoring  the  delta
                                                                 (k)
term  and the truncation error, and approximating the rise of PHI    by the
mean value theorem.  This leads to:

                 -k                                      (k+1)
           psi *h  *(1+abs(PHI))*tau*alpha  = 2*h*abs(PHI     )/w
              1                           k

                                             (k+1)
where  w = 2h/s  is  the  window  width,  PHI       again is evaluated at a
suitable point, and psi  is a safety factor.  The larger psi , the  clearer
                       1                                    1
                        (k)
will be the graph of PHI   .

          Solving for h yields:

                                                      (k+1)   (
        h = [psi (1+abs(PHI))*tau*alpha *w /(2*abs(PHI     ))] 1/(k+
                1                      k

          Table  2  contains  threshold values for various values of D (the
number of digits carried) and psi  = 5,  for  the  case  that  PHI  is  the
                                 1
exponential.  All derivatives have been evaluated at x = 0.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  86
    Digits  (D)                   Degree of Derivative (k)

                1         2         3         4         5         6

       1     3.46D+00  2.88D+00  3.46D+00  4.34D+00  4.94D+00  6.00D+00
       2     1.10D+00  1.34D+00  1.95D+00  2.74D+00  3.37D+00  4.32D+00
       3     3.46D-01  6.21D-01  1.10D+00  1.73D+00  2.29D+00  3.11D+00
       4     1.10D-01  2.88D-01  6.16D-01  1.09D+00  1.56D+00  2.24D+00
       5     3.46D-02  1.34D-01  3.46D-01  6.88D-01  1.06D+00  1.61D+00
       6     1.10D-02  6.21D-02  1.95D-01  4.34D-01  7.25D-01  1.16D+00
       7     3.46D-03  2.88D-02  1.10D-01  2.74D-01  4.94D-01  8.34D-01
       8     1.10D-03  1.34D-02  6.16D-02  1.73D-01  3.37D-01  6.00D-01
       9     3.46D-04  6.21D-03  3.46D-02  1.09D-01  2.29D-01  4.32D-01
      10     1.10D-04  2.88D-03  1.95D-02  6.88D-02  1.56D-01  3.11D-01
      11     3.46D-05  1.34D-03  1.10D-02  4.34D-02  1.06D-01  2.24D-01
      12     1.10D-05  6.21D-04  6.16D-03  2.74D-02  7.25D-02  1.61D-01
      13     3.46D-06  2.88D-04  3.46D-03  1.73D-02  4.94D-02  1.16D-01
      14     1.10D-06  1.34D-04  1.95D-03  1.09D-02  3.37D-02  8.34D-02
      15     3.46D-07  6.21D-05  1.10D-03  6.88D-03  2.29D-02  6.00D-02
      16     1.10D-07  2.88D-05  6.16D-04  4.34D-03  1.56D-02  4.32D-02
      17     3.46D-08  1.34D-05  3.46D-04  2.74D-03  1.06D-02  3.11D-02
      18     1.10D-08  6.21D-06  1.95D-04  1.73D-03  7.25D-03  2.24D-02
      19     3.46D-09  2.88D-06  1.10D-04  1.09D-03  4.94D-03  1.61D-02
      20     1.10D-09  1.34D-06  6.16D-05  6.88D-04  3.37D-03  1.16D-02
      21     3.46D-10  6.21D-07  3.46D-05  4.34D-04  2.29D-03  8.34D-03
      22     1.10D-10  2.88D-07  1.95D-05  2.74D-04  1.56D-03  6.00D-03
      23     3.46D-11  1.34D-07  1.10D-05  1.73D-04  1.06D-03  4.32D-03
      24     1.10D-11  6.21D-08  6.16D-06  1.09D-04  7.25D-04  3.11D-03
      25     3.46D-12  2.88D-08  3.46D-06  6.88D-05  4.94D-04  2.24D-03
      26     1.10D-12  1.34D-08  1.95D-06  4.34D-05  3.37D-04  1.61D-03
      27     3.46D-13  6.21D-09  1.10D-06  2.74D-05  2.29D-04  1.16D-03
      28     1.10D-13  2.88D-09  6.16D-07  1.73D-05  1.56D-04  8.34D-04
      29     3.46D-14  1.34D-09  3.46D-07  1.09D-05  1.06D-04  6.00D-04
      30     1.10D-14  6.21D-10  1.95D-07  6.88D-06  7.25D-05  4.32D-04
      31     3.46D-15  2.88D-10  1.10D-07  4.34D-06  4.94D-05  3.11D-04
      32     1.10D-15  1.34D-10  6.16D-08  2.74D-06  3.37D-05  2.24D-04
      33     3.46D-16  6.21D-11  3.46D-08  1.73D-06  2.29D-05  1.61D-04
      34     1.10D-16  2.88D-11  1.95D-08  1.09D-06  1.56D-05  1.16D-04
      35     3.46D-17  1.34D-11  1.10D-08  6.88D-07  1.06D-05  8.34D-05
      36     1.10D-17  6.21D-12  6.16D-09  4.34D-07  7.25D-06  6.00D-05
      37     3.46D-18  2.88D-12  3.46D-09  2.74D-07  4.94D-06  4.32D-05
      38     1.10D-18  1.34D-12  1.95D-09  1.73D-07  3.37D-06  3.11D-05
      39     3.46D-19  6.21D-13  1.10D-09  1.09D-07  2.29D-06  2.24D-05
      40     1.10D-19  2.88D-13  6.16D-10  6.88D-08  1.56D-06  1.61D-05

     Table 2:  Guide to selecting a value of the discretization paramete

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  87
                   I.2 Round-off versus Truncation Errors

          In working with MICROSCOPE, one  will  rarely  be  interested  in
obtaining  accurate  numerical  values of derivatives.  Rather, qualitative
features will be of primary concern.  However, if  accuracy  is  paramount,
then  the  discretization  parameter  should be picked as small as possible
without the round-off term swamping the truncation error.  The optimal step
size  is  obtained by equating the round-off term with the truncation error
and solving for h.  This yields:

                                                    (k+2)  1/(k+2)
          h = [(1+abs(PHI))*tau*alpha  / (gamma *PHI     )]
                                     k         k

          Table 3 lists values of h for the exponential.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  88
    Digits  (D)                   Degree of Derivative (k)

                1         2         3         4         5         6

       1     1.69D+00  2.49D+00  4.50D+00  8.25D+00  1.18D+01  1.88D+01
       2     7.83D-01  1.40D+00  2.84D+00  5.62D+00  8.49D+00  1.41D+01
       3     3.63D-01  7.87D-01  1.79D+00  3.83D+00  6.11D+00  1.06D+01
       4     1.69D-01  4.43D-01  1.13D+00  2.61D+00  4.40D+00  7.93D+00
       5     7.83D-02  2.49D-01  7.13D-01  1.78D+00  3.17D+00  5.95D+00
       6     3.63D-02  1.40D-01  4.50D-01  1.21D+00  2.28D+00  4.46D+00
       7     1.69D-02  7.87D-02  2.84D-01  8.25D-01  1.64D+00  3.34D+00
       8     7.83D-03  4.43D-02  1.79D-01  5.62D-01  1.18D+00  2.51D+00
       9     3.63D-03  2.49D-02  1.13D-01  3.83D-01  8.49D-01  1.88D+00
      10     1.69D-03  1.40D-02  7.13D-02  2.61D-01  6.11D-01  1.41D+00
      11     7.83D-04  7.87D-03  4.50D-02  1.78D-01  4.40D-01  1.06D+00
      12     3.63D-04  4.43D-03  2.84D-02  1.21D-01  3.17D-01  7.93D-01
      13     1.69D-04  2.49D-03  1.79D-02  8.25D-02  2.28D-01  5.95D-01
      14     7.83D-05  1.40D-03  1.13D-02  5.62D-02  1.64D-01  4.46D-01
      15     3.63D-05  7.87D-04  7.13D-03  3.83D-02  1.18D-01  3.34D-01
      16     1.69D-05  4.43D-04  4.50D-03  2.61D-02  8.49D-02  2.51D-01
      17     7.83D-06  2.49D-04  2.84D-03  1.78D-02  6.11D-02  1.88D-01
      18     3.63D-06  1.40D-04  1.79D-03  1.21D-02  4.40D-02  1.41D-01
      19     1.69D-06  7.87D-05  1.13D-03  8.25D-03  3.17D-02  1.06D-01
      20     7.83D-07  4.43D-05  7.13D-04  5.62D-03  2.28D-02  7.93D-02
      21     3.63D-07  2.49D-05  4.50D-04  3.83D-03  1.64D-02  5.95D-02
      22     1.69D-07  1.40D-05  2.84D-04  2.61D-03  1.18D-02  4.46D-02
      23     7.83D-08  7.87D-06  1.79D-04  1.78D-03  8.49D-03  3.34D-02
      24     3.63D-08  4.43D-06  1.13D-04  1.21D-03  6.11D-03  2.51D-02
      25     1.69D-08  2.49D-06  7.13D-05  8.25D-04  4.40D-03  1.88D-02
      26     7.83D-09  1.40D-06  4.50D-05  5.62D-04  3.17D-03  1.41D-02
      27     3.63D-09  7.87D-07  2.84D-05  3.83D-04  2.28D-03  1.06D-02
      28     1.69D-09  4.43D-07  1.79D-05  2.61D-04  1.64D-03  7.93D-03
      29     7.83D-10  2.49D-07  1.13D-05  1.78D-04  1.18D-03  5.95D-03
      30     3.63D-10  1.40D-07  7.13D-06  1.21D-04  8.49D-04  4.46D-03
      31     1.69D-10  7.87D-08  4.50D-06  8.25D-05  6.11D-04  3.34D-03
      32     7.83D-11  4.43D-08  2.84D-06  5.62D-05  4.40D-04  2.51D-03
      33     3.63D-11  2.49D-08  1.79D-06  3.83D-05  3.17D-04  1.88D-03
      34     1.69D-11  1.40D-08  1.13D-06  2.61D-05  2.28D-04  1.41D-03
      35     7.83D-12  7.87D-09  7.13D-07  1.78D-05  1.64D-04  1.06D-03
      36     3.63D-12  4.43D-09  4.50D-07  1.21D-05  1.18D-04  7.93D-04
      37     1.69D-12  2.49D-09  2.84D-07  8.25D-06  8.49D-05  5.95D-04
      38     7.83D-13  1.40D-09  1.79D-07  5.62D-06  6.11D-05  4.46D-04
      39     3.63D-13  7.87D-10  1.13D-07  3.83D-06  4.40D-05  3.34D-04
      40     1.69D-13  4.43D-10  7.13D-08  2.61D-06  3.17D-05  2.51D-04

              Table 3:     Values of h for maximum accuracy

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  89
                     I.3 Derivatives of Step Functions

          It turns out that very small jumps (of  magnitude  eta,  say)  in
some derivative can be detected only by examining a higher order derivative
rather than the discontinuous derivative  itself.    We  determine  optimal
values of h and minimum values of eta by imposing two requirements.  First,
the delta term should be significantly larger than round-off  errors,  and,
second,  the  delta  term  should  be significantly larger than the rise of
   (k)
PHI    over half the window.  This leads to the equations

                          m-k         -k
            eta*delta   *h    = psi *h  *(1+abs(phi))*tau*alpha
                     m,k           2                           k

and

                                  m-k             (k+1)
                    eta*delta   *h    = psi *h*PHI
                             m,k           3

where psi  and psi  are safety factors.
         2        3

          We  consider  two  cases.  If m = 0 (i.e.  there is a step in the

trial function) equation (4) is independent of h.  Solving for  eta  yields
the minimum value

               eta = psi *(1+abs(PHI))*tau*alpha  / delta
                        2                       k        0,k

          The maximum value of h  (above  which  the  delta  term  will  be
                             (k)
obscured by the growth in PHI   ) is obtained by solving (5) for h:

                                              (k+1)  1/(k+1)
                h  = [eta*delta    / (psi *PHI     )]
                               0,k       3

          If m > 0 (i.e.  the discontinuity occurs  in  a  derivative)  the
minimum  value of eta can be computed by eliminating h between (4) and (5),
and solving for eta.  This gives

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  90
                                            (k+1)  m
                       eta =  [(psi *abs(PHI     ))
                                   3

                                         k+1-m  1/(k+1)
          *(psi *(1+abs(PHI))*tau*alpha )     )]        / delta m,
               2                       k                       (

          The  corresponding optimal value of h (above which the delta term
                                                       (k)
is too small to be visible in the general growth of PHI    and below  which
it  is  obscured  by  round-off  errors) can be obtained by eliminating eta
between (4) and (5) and solving for h, giving

                                                       1/(k+1)
              h = (psi *(1+abs(PHI))*alpha *tau / psi )
                      2                   k          3

Notice  that  this  expression  is  independent  of  m,  the  degree of the
derivative in which the jump occurs.

          Table  4  lists minimum values of eta (in the last seven columns)
and the corresponding optimal value of h (in the  second  column)  for  the
case  of the exponential, and for a few values of tau.  Notice how the size
of the jump that can be detected is sometimes decreased by  several  orders
of magnitude if higher order derivatives are examined.

  tau =  1.0D-10
                   Degree of discontinuous derivative
   k optimal h   0       1       2       3       4       5       6

   0  5.0D-10  1.5D-09
   1  4.5D-05  1.2D-08 1.3D-04
   2  1.6D-03  1.2D-08 7.6D-06 4.8D-03
   3  1.2D-02  1.8D-08 2.9D-06 4.6D-04 3.7D-02
   4  4.8D-02  1.6D-08 1.0D-06 1.1D-04 6.9D-03 1.4D-01
   5  1.2D-01  2.0D-08 7.8D-07 3.9D-05 1.6D-03 4.0D-02 3.5D-01
   6  2.4D-01  1.9D-08 4.0D-07 1.7D-05 3.7D-04 1.0D-02 8.7D-02 7.2D-01

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  91
  tau =  1.0D-17
                   Degree of discontinuous derivative
   k optimal h   0       1       2       3       4       5       6

   0  5.0D-17  1.5D-16
   1  1.4D-08  1.2D-15 4.2D-08
   2  7.4D-06  1.2D-15 1.6D-10 2.2D-05
   3  2.2D-04  1.8D-15 1.6D-11 1.5D-07 6.6D-04
   4  1.9D-03  1.6D-15 2.5D-12 7.0D-09 1.1D-05 5.7D-03
   5  7.9D-03  2.0D-15 1.1D-12 8.3D-10 4.9D-07 1.9D-04 2.4D-02
   6  2.4D-02  1.9D-15 4.0D-13 1.7D-10 3.7D-08 1.0D-05 8.7D-04 7.2D-02

tau =  1.0D-24
                   Degree of discontinuous derivative
   k optimal h   0       1       2       3       4       5       6

   0  5.0D-24  1.5D-23
   1  4.5D-12  1.2D-22 1.3D-11
   2  3.4D-08  1.2D-22 3.5D-15 1.0D-07
   3  3.9D-06  1.8D-22 9.1D-17 4.6D-11 1.2D-05
   4  7.6D-05  1.6D-22 6.3D-18 4.4D-13 1.7D-08 2.3D-04
   5  5.4D-04  2.0D-22 1.7D-18 1.8D-14 1.6D-10 8.7D-07 1.6D-03
   6  2.4D-03  1.9D-22 4.0D-19 1.7D-15 3.7D-12 1.0D-08 8.7D-06 7.2D-03

  tau =  1.0D-31
                   Degree of discontinuous derivative
   k optimal h   0       1       2       3       4       5       6

   0  5.0D-31  1.5D-30
   1  1.4D-15  1.2D-29 4.2D-15
   2  1.6D-10  1.2D-29 7.6D-20 4.8D-10
   3  7.0D-08  1.8D-29 5.1D-22 1.5D-14 2.1D-07
   4  3.0D-06  1.6D-29 1.6D-23 2.8D-17 2.8D-11 9.1D-06
   5  3.7D-05  2.0D-29 2.5D-24 3.9D-19 4.9D-14 4.0D-09 1.1D-04
   6  2.4D-04  1.9D-29 4.0D-25 1.7D-20 3.7D-16 1.0D-11 8.7D-08 7.2D-04

 Table 4: The superiority of testing Delta Functions and their derivatives

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  92
                  Appendix II:  Organization of MICROSCOPE

          This    appendix    contains   (1)  a  brief  discussion  of  the
organizational  framework  upon  which  MICROSCOPE is built, (2) a detailed
explanation of the sampling scheme  and  logic  which  MICROSCOPE  uses  to
calculate  the  tangential  derivatives, and (3) a brief description of the
common blocks used.

          MICROSCOPE  has  evolved  over  a  period  of   several    years,
progressing through several preliminary versions.  The core of the  present
version  was designed and written by Bill Harris during the summer of 1983.
MICROSCOPE then grew, under the hands of Peter Alfeld, to  a  substantially
larger  package  which  is  the  current  version.    This explains lack of
uniformity in the commenting of the source code.  It also accounts for  the
inconsistency  in the notation used within the program versus that employed
in    this  manual.    However,  only  very  serious  users  interested  in
understanding  and  possibly manipulating the code (for whome this appendix
is written) should suffer from such idiosyncrasies of the package.

                  II.1 Organization of the Program Package

          MICROSCOPE  follows  a  common  and  well  established format for
interactive programs in  FORTRAN.  The  user  must  provide  a  short  main
program,  which  assigns  FORTRAN  Input/Output  device  numbers and screen
parameters, and then calls a master routine (MCRSCP).  MCRSCP is  a  driver
program  from  which  all  other routines are called and to which execution
returns after each command has been completed.  This is accomplished by (i)
prompting  for a new command, (ii) reading and recognizing the new command,
(iii) using a computed GO TO to branch to the appropriate routine,  (iv)  a
bit  of  logic and computation (i.e.  sampling the function and calculating
the derivatives), (v) displaying the results in some graphic form, and (vi)
updating an options table and returning to step (i).

          To help understanding the following flowchart several  ideas  and
their representative variables need to be introduced.  The logical variable
LGO indicates whether the screen is active (LGO = .TRUE) or inactive (LGO =
.FALSE.).    It is set and reset at a number of places in the package.  The
only place where the value of LGO has an effect on the program flow  is  in
the routine MCRSCP, between statements 7900 and 8300.

          There are 4 basic types of commands.   These  correspond  to  the
integer  variable  ITYPE  which  is  set  appropriately  by  each  command.
Commands of ITYPE = 1 imply that the function must be sampled from scratch.
Since  other  changes  may  be  desired  before  computation  begins, these
commands  deactivate  the  screen  and  this  is  accomplished  by  setting
LGO = .FALSE..    Commands which are of ITYPE = 2 require some computation.
Two special ITYPE = 2 commands are FORCE and GO. These cause LGO to be  set
to  .TRUE. and are the only commands that activate an inactive screen.  The
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  93
remaining commands of ITYPE = 2 only  make  modifications  of  the  current
setup  and  usually  only  require small amounts of additional computation.
When LGO = .TRUE. any ITYPE = 2 command is executed before the next command
is  prompted  for.  ITYPE = 3 commands do not require computation but cause
the alphanumerical display to be altered.  Finally, commands  of  ITYPE = 4
do not alter the display and do not require computation.

          The other major logical control variable is LSCRN. Its  main  use
is  in  screen-editing  versions of MICROSCOPE.  LSCRN = .FALSE. means that
the alphanumerical display  has  been  overwritten  by  text  and  must  be
regenerated.    LSCRN = .TRUE.  means  that  the display is intact from the
previous command and only selected pixels need to be  updated.    LSCRN  is
used by the display routine SGRAPH in the file SCREEN .

          Computation time for evaluating display functions can be sizable.
The  program  logic  and  sampling scheme were designed to utilize previous
computations   and  eliminate  unnecessary  recomputations  to  the  extent
possible.  For example, shifts and magnification changes often require only
a few additional evaluations.

          The  flowchart that follows gives an overview of the logical flow
in the MCRSCP driver routine.   It  concentrates  on  the  portion  between
statement 1500 and 8300 where the logic is somewhat involved.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  94
                             Epitome   Flowchart

                                      !
                                      !  from Main Program
                                      !
                                      V
          * output message identifying MICROSCOPE
          * check screen parameters
          * copy channel numbers, screen parameters, and set flags
          * set LGO = .FALSE.
          * compute round-off characteristics                         (NUMDIG)
          * set default values for some of the variables contained in
               the various common blocks
          * input some of the help documentation as well as news      (INHELP)
   1500   * prompt/input/parse command                                (DIALOG)
          * reset error flags
          * branch to the appropriate subroutine (using a computed GO TO)
               This corresponds to statements 1600 through 7800. Many
               of these commands alter variables, with subscript 2, in
               the common block OPTION.  These will then be used by
               later routines.
   7900   * if command is of ITYPE = 1 (i.e. requires complete recomputation)
               then set: LGO = .FALSE.
          * if ITYPE = 2 and LGO = .TRUE.
               then calculate values for NUM and DEN corresponding to
                    sampling changes.  (See documentation in part 2
                    of this appendix)                                 (SGAMMA)
          * check for errors and output appropriate messages if any occurred
          * if error = .TRUE.
  <------------then go to 1500
          * if LGO = .FALSE. and the Refresh Screen (RSCREEN) command is given
               then display the old graphical information             (SGRAPH)
          * if LGO = .FALSE.
  <------------then go to 1500
          * branch to the appropriate section of the program depending on
               the value of ITYPE (using a computed GO TO)
   8000   * (if ITYPE = 2)
            * check to see which aspects of the sampling have been altered
               by the command and set the appropriate logical flags   (CHKCMP)
            * call the routines flagged by the CHKCMP routine.
               (the actual sampling and computation of derivatives occurs
                only in the routine SCMUPD)
   8100   * (if ITYPE = 3)
            * set up the graphics data (i.e. update plot array)       (SGRUPD)
            * graph the data                                          (SGRAPH)
          * if logging is required
               then output a copy of the graphical display in scroll mode
          * copy current set of parameter values from new to old.     (OPCOPY)
  <-------* go to 1500
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  95

                       II.2 Sampling Scheme and Logic

          In the remainder of this appendix an explanation of the  sampling
scheme  and  computational  logic is given.  The variable h, as used in the
source code, is not the same as the variable labeled as h on  output.    To
reduce  confusion  we will use the following notation in this appendix (but
nowhere else in this manual):

         Variable in             Variable in       Variable in Output
         Source Code              Appendix          and elsewhere in
                                                       the manual

              h                      ss (step size)           s
              sw                     sw (stencil width)       h

          The  output  names correspond to the common usage while the names
used in the program and appendix have the meanings defined below.

          The  basic  idea  of the sampling scheme consists of representing
the relevant part of the line of investigation in two  linear  arrays,  one
corresponding  to  points  in  the domain, and one containing corresponding
values of the display function (if it has been evaluated).  Any changes  in
the  stencil  width  and step size, as well as small shifts of the point of
examination are then implemented by shuffling the information in these  two
arrays.   The size of the arrays has been chosen to accomodate fairly large
changes in parameter values with little computation.  The key variables and
arrays used in the program are as follows:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  96
     XS(IXSIZE):   the sampling array for  the  domain  space,  giving  the
          distance  from the point of examination in units of the direction
          of investigation.
     FS(IXSIZE):   the  sampling  array containing the value of the display
          function f at the corresponding point in XS().
     IXSIZE:   the  dimension  of  the  XS()  and FS() arrays. (the current
          value of IXSIZE is 5377)
     ICENTR:   the index of the center element of the XS() and FS() arrays.
          (the current value of ICENTR is 2689)
     ROPSTS(2):   this  is the "step size" corresponding to 8 points in the
          XS() array. (see the illustration below) It appears in the common
          block OPTION. The reason for introducing it here is that for most
          computations it will remain fixed  while  the  other  parameters,
          such as sw and ss, will be doubled, halved, etc.
     ss:   (step size) the spacing between the  points  plotted  along  the
          line of investigation. This is h in the source code.
     sw:   (stencil width)  the  width  of  the  interval  over  which  the
          finite-difference formulas are calculated. This is h on output.
     nh:   the spacing between plotted points in the index space.  It  must
          be a positive integer multiple of 4.
     nw:   half the stencil width  in  index  space.  It  must  also  be  a
          positive  integer  multiple  of  4. The number of points in index
          space corresponding to the stencil width is 1 + 2*nw.

          The  sampling  points  are  spaced  unevenly  along  the  line of
investigation, but evenly in  index  space.    In  the  following  figures,
asterisks  denote  the  points  at  which  the display function needs to be
evaluated.  A hyphen marks a point for which space for a function value has
been  provided  in  the  arrays  XS  and  FS,  but  where  no evaluation is
necessary.  Consider a point p at which we wish  to  evaluate  the  display
function  and its derivatives up to order 6.  The stencil is centered about
p.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  97
                                       p

               -.......-...-...-.......*.......-...-...-.......-    f(p)
                                       .
                                       .                             (1)
               *.......-...-...-.......-.......-...-...-.......*    f  (p)
                                       .
                                       .                             (2)
               *.......-...-...-.......*.......-...-...-.......*    f  (p)
                                       .
                                       .                             (3)
               *.......-...*...-.......-.......-...*...-.......*    f  (p)
                                       .
                                       .                             (4)
               *.......-...*...-.......*.......-...*...-.......*    f  (p)
                                       .
                                       .                             (5)
               *.......*...-...*.......-.......*...-...*.......*    f  (p)
                                       .
                                       .                             (6)
               *.......*...-...*.......*.......*...-...*.......*    f  (p)

               sw     sw   sw   sw             sw  sw  sw      sw
             - --   - -- - -- - --     0       --  --  --      --
                2      3    4    6              6   4   3       2

               <---------------------- sw --------------------->
                                  (h on output)

          The figure describes the actual sampling structure along the line
of investigation.  Space has been provided only for  points  at  which  the
display function may have to be evaluated.  Providing space for sampling at
increments of sw/12 would be simpler but wasteful  since  at  most  only  9
points (not 13) are needed in each stencil.

          Next, consider the problem of  extending  the  sampling  over  an
entire  line  segment.    The  particular  extension used in MICROSCOPE was
chosen so that changing the step size and stencil width by  powers  of  two
would  require  minimal computation.  Other factors are allowed but require
greater computation.

          Considering  a  portion of the line segment containing a sequence
of three plotted points:  p1,p2, and p3, the spacing (for the ratio sw/ss =
2/1,  nw  =  4,  and assuming all tangential derivatives are to be plotted)
looks like:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  98
..*.....*..*..*.....*.....*..*..*.....*.....*..*..*.....*.....*..*..*.....*..
  .                 p1                p2                p3                .
  .                 .                 .                 .                 .
  *.....*..*..*.....*.....*..*..*.....* (stencil for p1).                 .
 -4    -3 -2 -1     0     1  2  3     4                 .                 .
                    .                 .                 .                 .
                    *.....*..*..*.....*.....*..*..*.....* (stencil for p2).
                   -4    -3 -2 -1     0     1  2  3     4                 .
                    .                 .                 .                 .
                    .(stencil for p3) *.....*..*..*.....*.....*..*..*.....*
                                     -4    -3 -2 -1     0     1  2  3     4

                    <---------------- sw --------------->
                    <------ ss ------> <------ ss ------>

          Note  how  the stencils overlap, allowing the use of one value of
the display function for more than one (here two  or  three)  values  of  a
derivative.    If  the stencil width is doubled while the step size is kept
constant (corresponding to an increase in the window width by a  factor  2)
we obtain:

..*.....*..*..*.....*.....*..*..*.....*.....*..*..*.....*.....*..*..*.....*..
  .                 p1                p2                p3                .
..*.....*..-..-.....*.....-..-..*.....*.....*.....-.....* (stencil for p1).
 -4    -3           0           3     4     5           8                 .
  .                 .                 .                 .                 .
  *........-..*.....*.....*..-..-.....*.....-.....*.....*.....*...........*
 -8          -5    -4    -3           0           3     4     5           8
                    .                 .                 .                 .
  .(stencil for p3) *.....-..-..*.....*.....*...........*.....-.....*.....*..
                   -8          -5    -4    -3           0           3     4
  .                 .                 .                 .                 .
  <---------------------------------- sw --------------------------------->
                    <------ ss ------> <------ ss ------>

          The above operation requires additional evaluation of the display
function  only  at  the  boundary  of  the  interval of investigation.  The
reverse process of halving the window width  would  require  no  additional
evaluations at all.

          So that all derivatives, up to and including the  sixth,  can  be
evaluated,  the  minimal  number  of points between plotted points (such as
p1,p2,p3) is 4.  Furthermore, the distance  is  always  a  multiple  of  4.
Similarly,  the  minimal  number  of  points needed in a stencil is 9 (i.e.
-4,...,0,...,4), and it is always of the form 1+(an integer multiple of 8),
although  evaluation  takes  place at at most 9 points.  These features are
illustrated in the following progression of increasing stencils:

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page  99
..*.....*..*..*.....*.....*..*..*.....*.....*..*..*.....*.....*..*..*.....*..
  .                 .                 p2                .                 .
  .                 *.....*..*..*.....*.....*..*..*.....*                 .
  .                -4    -3 -2 -1     0     1  2  3     4                 .
  .                 .                 .                 .                 .
  *.....-..-..*.....*.....*..-..-.....*.....-..-..*.....*.....*.....-.....*
 -8          -5    -4    -3           0           3     4     5           8
  .                 .                 .                 .                 .
..*.....-..*..-.....*.....-..-..-.....*.....-..-..-.....*.....-..*..-.....*..
 -8       -6       -4                 0                 4        6        8

          These  3  stencils  span  index  sets  of  9,17,  and  25 points,
respectively (although the third set would not fit  on  this  page).    The
variable nw for these is 4,8, and 12, respectively.

          The relation between the quantities ss and ROPSTS(2) is given by
                           nh
                     ss =  -- * ROPSTS(2)
                            8
          The  program  strives  to maintain a value of nh = 8.  For a more
detailed discussion see the description of the routine SGAMMA below.

          The  relation  between  the  point  of examination, P, a point of
evaluation, PS, the distance t of ps from P, the direction of  examination,
d, and the quantities in MICROSCOPE, is given by:

                                     .
                                     .
                                     .
                        XS(ICENTR-2) =     -ROPSTS(2)/4
                        XS(ICENTR-1) =     -ROPSTS(2)/6
                        XS(ICENTR)   =          0
                        XS(ICENTR+1) =      ROPSTS(2)/6
                        XS(ICENTR+2) =      ROPSTS(2)/4
                        XS(ICENTR+3) =      ROPSTS(2)/3
                        XS(ICENTR+4) =      ROPSTS(2)/2
                        XS(ICENTR+5) =    2*ROPSTS(2)/3
                        XS(ICENTR+6) =    3*ROPSTS(2)/4
                        XS(ICENTR+7) =    5*ROPSTS(2)/6
                        XS(ICENTR+8) =      ROPSTS(2)
                                     .
                                     .
                                     .
and

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 100
                                   P = ROPPNT(*,2)
                                   d = ROPUDI(*,2)
                                   t = XS(i)
                                  PS = P + t * d
                               FS(i) = f(PS)

             LDEF(I) = .TRUE.   <===>   FS(I) has been evaluated

          To explain the calculation of the derivatives, consider a point p
at which we wish to evaluate the function and its derivatives.  To evaluate
all derivatives up to the sixth we need  9  points.    We  number  them  as
follows:

             1       2   3   4       5       6   7   8       9
             *.......*...*...*.......*.......*...*...*.......*
             .       .   .   .       p       .   .   .       .
             .       .   .   .       .       .   .   .       .
             sw     sw   sw   sw     0       sw  sw  sw      sw
           - --   - -- - -- - --             --  --  --      --
              2      3    4    6              6   4   3       2

          Instead of using the formulas given in section 1.2 directly,  the
following equivalent but more efficient formulas are used:

     g0     =               f5

     g1     =               f1 + f9

     g2     =           - ( f1 - f9 )

     g3     =         4 * ( f3 + f7 )

     g4     =         4 * ( f3 - f7 )

     g5     =         4 * ( f2 - f8 ) + 5 * ( f6 - f4 )

     g6     =       - 6 * ( f2 + f8 ) + 15 * ( f4 + f6 )

      (0)
     Q    =               g0
      i

      (1)
     Q    =  (1/sw)   *   g2
      i

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 101
      (2)          2
     Q    =  (2/sw)  * ( g1 - 2*g0 )
      i

      (3)         3
     Q    = (4/sw) /4 * ( 2*g2 + g4 )
      i

      (4)          4
     Q    =  (4/sw)  * ( g1 - g3 + 6*g0 )
      i

      (5)          5
     Q     = (6/sw) /2 * ( g2 + g5 )
      i

      (6)          6
     Q    =  (6/sw)  * ( g1 + g6 - 20*g0 )
      i

          The sequence in which MCRSCP calls the main routines is:

           SGAMMA  - calculates gamma  (see following discussion)
           CHKCMP  - checks to see what changes in computations are needed
           SSMPUD  - shift and copy
           SCMUPD  - compute new values

          When  a  step  size/stencil  width changing command is given, the
program will attempt to change nh and nw without having to change ROPSTS(2)
(and hence copy or throw out data).  Otherwise, MCRSCP attempts to choose a
change in scaling (ROPSTS(2)) which saves as much data as possible.    This
is  the  purpose of the routine SGAMMA which we now discuss in some detail.
First we introduce additional notation.

width:  the number of columns on the terminal screen used for plotting
m:   scaling factor for step size (either a positive integer or 1/(positive
     integer) )
v:   scaling factor for stencil width (or window), (either positive integer
     or 1/(positive integer) )
rho: lowest common multiple of the denominators of m and v.
s:   =  ROPSTS(2).  (base  step size when nh = 8), (this differs from the s
     that denotes the interval elsewhere in this manual)

          Primes  will  denote  the  new  values  for  nh,nw,ss,and s.  For
example:  h' denotes the step size after changes have been made.

Define:                gamma  =  s/s'  =  num/den  >  0

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 102
Constraints:    The  commands  set  the  values  of  m  and v.  There are 5
constraints which are then used to choose the value of gamma.  They are not
all independent of each other.

     (1)           4    <=    nh'    <=    IXSIZE/width

     (2)           4    <=    nw'    <=    IXSIZE/2

     (3)           nh'/4  must be integer  <===>  mod(nh',4) = 0

     (4)           nw'/4  must be integer  <===>  mod(nw',4) = 0

     (5)  effective sampling width = nh' * width + 2 * nw'    <=    IXSIZE
             in the index space

We have:
               ss = (nh/8) * s    and    ss' = (nh'/8) * s'
Also:
                               ss' = m * h
Hence:
                  ss' = (nh'/8)*s' = m * h = m * (nh/8) * s

     ===>             (nh'/8) * s' = m * (nh/8) * s

     ===>      nh' = m * nh * s/s' = m * nh * gamma

Similarly:

          sw = (nw/4) * s,  sw' = (nw'/4) * s', and sw' = v * sw

     ===>       sw' = (nw'/4) * s' = v * sw = v * (nw/4) * s

     ===>      nw' = v * nw * s/s' = v * nw * gamma

In summary:

                            nh' = m * nh * gamma

                            nw' = v * nw * gamma

Referring to the conditions numbered above, divide (1) by m * nh and (2) by
v * nw to get:

                   4                             IXSIZE       1
                --------    <=    gamma    <=    ------- * --------
                 m * nh                           width     m * nh

          and

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 103
                   4                             IXSIZE       1
                --------    <=    gamma    <=    ------- * --------
                 v * nw                             2       v * nw

          Let

                             4         4
               a  =  max( ------- , ------- )
                           m * nh    v * nw

          and

                           IXSIZE       1       IXSIZE       1
               b  =  min( -------- * ------- , -------- * -------- )
                            width     m * nh      2        v * nw

          From above, gamma must satisfy:

                      a    <=    gamma    <=    b

          Furthermore:

               nh' = m * nh * gamma    and    mod(nh',4) = 0

     ===>  (*)         mod( m * nh * gamma , 4 ) = 0

         nw' = v * nw * gamma    and    mod( v * nw * gamma , 4 ) = 0

     ===>  (**)        mod( v * nw * gamma , 4 ) = 0

          The routine SGAMMA uses the above two conditions (*) and (**)  to
choose  acceptable  values  for  gamma (and hence num and den since gamma =
num/den).

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 104
                             Outline of SGAMMA

     *  check to see if the changes m and v can be accomodated by changing
          nh and nw, but not ss (h in code).
        *  if no changes in ss are needed
  <---------- then  num = den = 1  ==>  gamma = 1  and return
     *  calculate a and b
     *  if m = v
  <---------- then  set  gamma = m, ROPSTS(2) = m * ROPSTS(2), and return
     *  calculate rho
                           m' = rho * m   (m' and v' are positive integers)
                           v' = rho * v
     *  determine "all" possible numerators and denominators for gamma
           (up tp 32) which satisfy:
                      a    <=    num/den    <=    b
                      mod( m * nh * gamma , 4 ) = 0
                      mod( v * nw * gamma , 4 ) = 0
     *  rank the candidate values of gamma according to 4 criteria
          (1)     nh' * width + 2 * nw'    <=    IXSIZE
          (2)     8 * width    <=    nh' * width + 2 * nw'    <=    ICENTR
                  (this allows for halving and doubling without rescaling)
          (3)     gamma a power of 2  (positive or negative)
          (4)     nh' > 4   and   nw' > 4
     *  choose the combination of num and den which has the highest cor-
           responding rank and set the variables accordingly.
  <--*  return

                             II.3 Common Blocks

          Here  we  list  the  COMMON  blocks  used  in  MICROSCOPE.   This
information may be useful in modifying the code and in accessing  the  data
structures  of  the  package  via the command USER (see section 4.15).  For
each common block we list in parentheses the number of words (i.e.  2 words
for  each  DOUBLE  precision variable and 1 word for each REAL, INTEGER, or
LOGICAL variable) occupied by the block.  The blocks are listed in the same
sequence as they appear in the routine MCRSCP.

CB (16) controls cross differentiation.
     CBDSW      :    width of differentiation stencil
     CBD(3)     :    normalized cross direction
     CBDU(3)    :    unnormalized cross direction
     ICBD       :    order of cross differentiation
     LCBD       :    .TRUE. if cross differentiation is on, .FALSE.
                          otherwise

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 105
IO (5) contains the input/output device numbers.
     RECORD     :     Record device number. (Output data file for recording
                        screen images and comments)
     GRAPHD     :     Graphics device number. (terminal or graphics display)
     HELPD      :     Help file device number.
     RSTRTD     :     Restart file device number.  (unformatted output data
                        file for use in restarting at a later date)
     INPUTD     :     Input device number.  (usually the terminal)

LOG (1) controls logging
     LCHN       :     Logging device number (= 0 <===> logiing is off

LOGCOM (5391) contains logical arrays used primarily by SCMUPD
                        to keep track of what has already been computed.
     LDF(7)     :     Denotes whether the (i-1)'th derivative has been calcu-
                        lated.  LDF(i) = .FALSE. means the (i-1)'th derivative
                        has not been calculated.  LDF(i) = .TRUE. means it has.
     LPLT(7)    :     Denotes whether the (i-1)'th derivative is currently
                        being displayed.  LPLT(i) = .FALSE. means the (i-1)'th
                        derivative is not being displayed and LPLT(i) = .TRUE.
                        means it is.
     LDEF(5377) :     Denotes whether or not the interpolation function has
                        been calculated at the coordinates corresponding to
                        XS(i).  (i.e. whether FS(i) has been assigned)
                        LDEF(i) = .FALSE. means the i'th value has not been
                        sampled and LDEF(i) = .TRUE. means it has.

FUNCOM (23,426) contains arrays pertaining to the values of the
                        interpolation function at its sampled points.
     XS(5377)   :     The distance array, always centered about 0.  Its defini-
                        tion and usage is given in the second part of this
                        appendix.
     FS(5377)   :     The array containing the values of the interpolation
                         function corresponding to the points specified by the
                         XS() array.  See the second part of this appendix for
                         discussion.
     DF(135,7)  :     The finite differences.  DF(i,j) corresponds to the i'th
                         plotted point and (j-1)'th derivative.  These are the
                         p1,p2,p3's of the discussion in the second part of
                         this appendix.
     DFMNMX(2,7):     These are the minimums/maximums of the finite differences
                         in the DF() array.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 106
ERRCOM (2) used to handle error checking and reporting.
                         When errors are detected in any of the sub routines
                         or computation routines, the errors are flagged and
                         then reported by the CHKERR routine.
     ERRCOD     :     This is an integer code number for the type of error
                         detected.
     ERR        :     This is the logical flag which denotes whether or not
                         an error has occurred.  ERR = .FALSE. means no error
                         has occurred and ERR = .TRUE. means an error has
                         occurred.

PLTCOM (16342) contains display versions of the derivatives.
     IPLOT(135,7):    IPLOT(i,j) is the "screen coordinate" (integer) of the
                         (j-1)'th derivative in the i'th column.
     ISCRN1(135,57):  The previous screen image.  ISCRN1(i,j) contains the
                         Hollerith representation of the character to be
                         displayed at the (i,j)'th pixel on the screen.
                         (where indexing starts at the upper left corner
                         of the screen).  i is the horizontal component and
                         j is the vertical component.
     ISCRN2(135,57):  The current screen image.  This has the same description
                         as ISCRN1(,) above.
     SCALE(7)   :     The scale factors used to individually scale, up or down,
                         the finite difference "curves" (in the DF(,) array)
                         so that the curve fills up the entire screen in the
                         sense that the maximum point lies on the top row and
                         minimum point lies on the bottom row of the screen.

LOADIO (3) contains channel numbers of the loading devices.
     PLOAD      :     point loading device
     DLOAD      :     direction loading device
     CLOAD      :     cross direction loading device

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 107
SCREEN (7) contains the values of parameters describing the
                         device on which most interaction occurs (i.e. the
                         screen of the terminal in most cases)
     OUTPUT     :     The device number of the graphics device (usually the
                         terminal)
     LINES      :     The number of usable lines on the screen.  Note that
                         this may have to be one less than the number of
                         displayable lines.
     WIDTH      :     The number of columns to be displayed.  It is best to
                         choose an odd number for this so that the center
                         can be plotted.  It must be less than or equal to
                         135.  75 is a common value.
     ILP        :     The number of lines in the curve plotting portion of the
                         display.  It must be less than or equal to 57.
     IPRMPT     :     The number of lines above the screen bottom at which
                         the prompting commands are given.  It must be at
                         least 2.
     IDSPLA     :     The number of lines above the screen bottom at which the
                         numerical data region begins.  It must be greater than
                         IPRMPT by 6 or more.
     LSCRN      :     The logical variable denoting whether the curves are
                         currently being displayed or they have been over-
                         written by text.  This is to allow the program to
                         take advantage of terminals which allow screen
                         editing.  LSCRN = .FALSE. means that the screen has
                         been overwritten since the previous command and
                         LSCRN = .FALSE. means that the screen is intact from
                         the previous command.

OPTION (122) contains most of the variables, other than the
                         sampling arrays in FUNCOM, which may change due to
                         commands.  There are 2 copies of each variable.
                         (1) is the previous value and (2) is the current
                         value.  If mistakes are made in the inactive (deactiv)
                         mode (i.e. LGO = .FALSE.) then the UNDO command will
                         erase the changes and copy the old set (1) to (2).
     ROPDI(3,2) :     The vector specifying the direction of investigation.
                         Note that for all vector valued quantities, the
                         dimension is specified by IOPDM() below.
     ROPPNT(3,2):     The vector specifying the center of the line of
                         investigation.  If the shift is 0 (i.e. IOPSH(2) = 0)
                         then this is the point which is at the center of the
                         screen.
     ROPDR1(3,2):     Currently unused vector.
     ROPDR2(3,2):     Currently unused vector.
     ROPSTS(2)  :     The nominal spacing between the points at which the
                         finite differences are calculated.  These will be
                         the plotted points.  "Nominal" refers to the base
                         step size when nh(2) = 8, as discussed in the second
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 108
                         part of this appendix.  As noted earlier, this is
                         not the h which appears on output.
     ROPSTW(2)  :     The stencil width (sw).  This corresponds to the h which
                         appears on output.  It is discussed in the second
                         part of this appendix.
     ROPUDI(3,2):     The normalized (unit) vector specifying the direction
                         of investigation.  This is the normalized version
                         of the ROPDI() vector.
     NH(2)      :     The step size in index space.  See the discussion in the
                         second part of this appendix.
     NW(2)      :     Half of the stencil width in index space.  See the
                         discussion in the second part of this appendix.
     ILEFT(2)   :     The index of the left-most element of the FS() array
                         which has been assigned a value.
     IRIGHT(2)  :     The index of the right-most element of the FS() array
                         which has been assigned a value.
     IOPDM(2)   :     The dimension of the domain space.  It can be 1,2 or 3.
     IOPSH(2)   :     The shift, in integer increments, of the plotted points
                         from the center defined by ROPSTS(*,2).
     IOPSS(2)   :     The scaling factor for the step size.  It is set by
                         the commands.
     IOPWN(2)   :     The scaling factor for the stencil width.  This
                         multiplies/divides the current window, as it appears
                         on the screen.  It is set by the commands.
     OPDC(2)    :     The logical flag determining whether or not the center
                         of the screen is to be marked.
     OPDS(2)    :     The logical flag determining whether or not a scale is
                         to be displayed along the horizontal axis.
     OPDX(2)    :     The logical flag determining whether or not a line of
                         dashes will be displayed to represent the x-axis.
     OPCMP(2)   :     The logical flag denoting whether or not any computations
                         have yet been done for the current set of ROPPNT and
                         ROPDI.
     OPSPL(2)   :     Currently not in use.
     OPDF1(7,2) :     The logical array specifying which derivatives are to
                         be displayed.  It is set by the DGRAPH and EGRAPH
                         commands.
     OPDF2(7,2) :     The logical array specifying which derivatives are to
                         to be accentuated as they are displayed.  It is set
                         by the ACCENT command.

NRMLZE (1) controls normalization of derivatives
     NORMAL     :      = .TRUE.  <===>  normalization is on

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 109
ROOM (2) controls whether one line of the graphical
                         display is transferred to the numerical display.
                         This is only necessary if all six tangential
                         derivatives of a cross derivative are plotted.
     ILPUSR     :     User specified space for the graphical display
     IDSUSR     :     User specified space for the numerical display
                         The corresponding variables ILP and IDSPLA in
                         the common block SCREEN are modified as
                         necessary.

HELPER (7330) contains help information
     HELP       :      Help device channel number
     JHELP1     :      Length of the HSUMRY information (in lines)
     JHELP2     :      Length of the HELP information (in lines)
     JHELP3     :      Number of available commands
     JHELP(99,2):      (I,1) line in which detailed help for I-th
                         command begins
                       (I,2) length of detailed help
     IHELP(72,99):     (*,I) prompt text for I-th command

USER (5) see appendix III

PLOWN (296) contains current PLOT options
     ITITLE(72) :      Title
     IBOTTM(72) :      Legend
     NUMBR      :      page number
     BL(20)     :      left bottom label
     BR(20)     :      right bottom label
     FRAME      :      = .TRUE.  <===>  frame is drawn
     COLOR      :      = .TRUE.  <===>  plot is in color
     NUMRCL     :      = .TRUE.  <===>  numerical display is drawn
     LMARK      :      = .TRUE.  <===>  graphs are marked
     LBLS       :      = .TRUE.  <===>  graphs are labeled
     DATE       :      = .TRUE.  <===>  date is drawn
     TIME       :      = .TRUE.  <===>  time is drawn

FOOWN (1) controls revaluation after the command FORCE has
                         been issued.
     LFO        :      = .TRUE.  <===>  reevaluate

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 110
                       Appendix III: The Test Package

          The examples in this manual can  be  reproduced,  and  experience
with MICROSCOPE can be gained, by using the test routines (a special choice
of the trial function F and the user intervention routine  SUBUSR,  plus  a
few  support  routines)  supplied  with  the  package.    The  test code is
contained in the files USRLC and USRUC (see chapter 5).

          Several  different trial functions are available for examination,
and rounding to any number of digits up to the  number  supported  on  your
local installation can be simulated.

          All options are selected using the command USER, which  puts  you
into user mode.  You can change options similarly as in the PLOT mode until
you are satisfied, and then return to the command mode.

          Options are chosen by passing numbers to the program according to
the prompts given.  A current list of options is maintained on the  screen.

          The  trial  function  is selected by giving its reference number.
The parameter eta is 1 by default and can be changed  by  typing  -3.    By
default  rounding  to  10  digits is simulated.  Rounding can be changed by
typing -1 and giving the desired number of significant digits.  It  can  be
turned  off  by  giving  0  as  the  number of digits.  The following trial
functions are available:

                                                      x
  1:   F(x) = s(0,eta,x)   or   F(x) = s(0,eta,x)  + e

                                                      x
  2:   F(x) = s(1,eta,x)   or   F(x) = s(1,eta,x)  + e

                                                      x
  3:   F(x) = s(2,eta,x)   or   F(x) = s(2,eta,x)  + e

                                                      x
  4:   F(x) = s(3,eta,x)   or   F(x) = s(3,eta,x)  + e

                                                      x
  5:   F(x) = s(4,eta,x)   or   F(x) = s(4,eta,x)  + e

                                                      x
  6:   F(x) = s(5,eta,x)   or   F(x) = s(5,eta,x)  + e

          The  addition of the exponential in the above functions is off by
default, and is toggled on or off by typing -2.

               eta*x
  7:   F(x) = e
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 111

                            2
  8:   F(x,y) = eta*abs(x)*x  + (1-eta)*abs(y)*y

                  2
  9:   F((x,y) = x *abs(x)*y*abs(y)

                                         x
 10:   F(x) = the spline interpolant to e  used in section 2

               x
 11:   F(x) = e  - function 10
          (i.e. F(x) is the error in the spline 10)

 12:   F(x) = 0

 13:   F(x) = eta*x

               e
 14:   F(x) = x ta

               e
 15:   F(x) = x ta

          The user mode is left by typing zero (or just RETURN).

          The  commands  STORE  and  RESTART  are  effective  on  the  test
parameters  which  are stored in the COMMON block USER. The parameters have
the following meanings:

ETA: DOUBLE PRECISION variable containing the value of eta.

IROUND:  Number of digits to which function values are rounded (IROUND =  0
     <===> no rounding is taking place).

N:   reference number of the trial function.

ADD: LOGICAL  variable  that indicates whether an exponential term is to be
     added to the trial functions defined by N = 1,...,6.

          The  following  table  gives  the USER defaults and the parameter
settings necessary to generate the figures  in  this  manual.    N  is  the
reference  number  of the trial function, D is the number of digits rounded
to.  The entry "---" means "does not apply".    The  default  settings  are
effective  on  the  first  USER  and  after giving the command SETDF. Other
parameters necessary for reproducing the examples in  this  manual  (point,
direction,  dimension,  interval  etc.)  can be read off the alphanumerical
display in each figure.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 112
    Figure       N        D        ETA      exponential added

    Default      1       10          1               NO
      1          9       10        ---              ---
     2-6        11       10        ---              ---
     7-8        10       10        ---              ---
      9         12       10        ---              ---
     10         13       10        2D-9             ---
   11-12        10       10        ---              ---
   13-18         3       10       -5D-3             YES
     19          1       10         -1               NO
     20          2       10         -1               NO
     21          3       10         -1               NO
     22          4       10         -1               NO
     23          5       10         -1               NO
     24          6       10         -1               NO
   25-26         7       10          1              ---
     27          9       10        ---              ---
     28         14       10        1.5              ---
     29         15       10        1.5              ---

                          Table of test parameters

          Because  of  the  random  nature  of  round-off  errors, somewhat
different displays may be obtained even with the above parameter  settings.

          Some  of  the  above  test functions so far have not been used in
this manual.  They illustrate more subtle phenomena that will not  normally
occur  in  multivariate  interpolation  and  approximation.    In a typical
application,    the    trial    function  will  have  a  finite  degree  of
differentiability  across the front, and be infinitely often differentiable
in any direction  contained  in  the  front.    Function  8  illustrates  a
situation where the degree of differentiability is finite in any direction,
but is dependent upon the direction of investigation.  The function is once
differentiable  in  the  y  direction  and  twice  differentiable  in the x
direction.  The relative sizes of the jumps in the appropriate  derivatives
can be controlled by the parameter eta.

          The functions 14 and 15 can be used to illustrate discontinuities
other  than step discontinuities.  The functions differ in the way they are
defined for negative values of x, for which the value  of  function  14  is
negative, and that of function 15 positive, if the integer part of abs(eta)
is even, and of the opposite sign if it is odd.

          For  both  functions 14 and 15, the value at x = 0 is 0 if eta is
negative.  This prevents  a  floating  point  overflow  and  a  meaningless
display.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 113
          The following two figures illustrate  functions  14  and  15  for
eta = 1.5  (i.e.   a function that is 1.5 times differentiable).  The first
derivative is continuous, but the second derivative exhibits a pole.    The
illustration  of these features is enhanced by choosing the window width to
be less than 1.

..                                   2                           1111111111
  ..                                 I                   11111111      ..
    ..                               I             111111            ..
      .                              I       111111                 .
       ..                            I    111                     ..
         ..                          I 111                      ..
           ..                        I1                       ..
             ..                      1                      ..
               ...                  1I                   ...
                  ..             111 I                 ..
                    ..       1111    I               ..
                      ..11111       2I2           ...
                 1111111 ...       2 I 2       ...
         11111111           ...2222  I  2222...
2222222222222222222222222222222 ........... 2222222222222222222222222222222
===========================================================================
Point            =    0.000000D+00  s  =   4.0000D-04
Direction        =    1.000000D+00  h  =   2.0000D-04
F0 ( 2.14D-11, 1.80D-03) F1 (-1.82D-01, 1.82D-01) F2 ( 6.17D+00, 1.41D+02)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    2901

               Figure 28  A 3/2 times differentiable function

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 114
11111                                I2                               11111
     1111                            I                            1111.
         1111                        I 2                      1111..
             1111                    I  22                1111..
                 111                 I    2222         111..
                    111              I        22222222222222222
                       111           I     ......111           222222222222
                          11   ......2.....    11
222222222222222          ...11.      I       11
               22222222222222 11     I     11
               ....          22221   I   11
           ....                  22  I  1
       ....                        2 I 1
    ...                             1I1
....                                21
===========================================================================
Point            =    0.000000D+00  s  =   4.0000D-04
Direction        =    1.000000D+00  h  =   2.0000D-04
F0 (-1.80D-03, 1.80D-03) F1 ( 1.41D-02, 1.82D-01) F2 (-3.81D+01, 3.81D+01)
I/O:  25  6  6  1  2  3 27 28 29 30 NRML on   current  CALLS =    3052

            Figure 29  Another 3/2 times differentiable function

          Figure  29 shows a cusp in the first derivative whereas in figure
28 the first  derivative  passes  vertically  through  the  origin.    Both
derivatives  are continuous at the point of examination and have a vertical
tangent there.  The fact that the second  derivative  has  a  pole  can  be
verified  by  observing  that  the  extreme function value increases as the
discretization parameter is decreased.  For a cusp,  the  extreme  function
value  approaches  a limit as h decreases.  This phenomenon can be utilized
to distinguish between a cusp and a pole.

          It  is  of  course straightforward to program other or additional
examples for a trial function by modifying the routines in the test package
appropriately.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 115
          Appendix IV:  Examples for Graphical (<PLOT79>) Displays

  The following pages contain <PLOT79> Equivalents of the figures in this

                                   manual

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 116
          References

1.   Abramowitz,  M.,  and  Stegun,  I.,  1968,  Handbook  of  Mathematical
     Functions, Dover Publication

2.   Alfeld, Peter, A Trivariate Clough-Tocher Scheme for  Tetrahedral Data
     to  appear  in  Computer  Aided  Geometric  Design,  An  International
     Journal, North Holland

3.   Beebe,  Nelson  H.F.,  1980,  DOCUMENT,  A  Portable  Text  Formatting
     Program, Department of Physics, University of Utah,  Salt  Lake  City,
     Utah 84112

4.   Beebe, Nelson H.F., 1979, A User's Guide to  <PLOT79>,  Department  of
     Physics, University of Utah, Salt Lake City, Utah 84112

5.   Barnhill, R.E., October 1983,  A  Survey  of  the  Representation  and
     Design  of  Surfaces,  IEEE  Computer Graphics and Apllications, v. 3,
     Number 7, pp. 9-16

6.   de Boor, C., 1978, A Practical Guide to Splines, Springer Verlag

7.   Courant, R., and Hilbert, D., 1962, Methods of  Mathematical  Physics,
     v. 2, Wiley & Sons

8.   Ryder, B.G., The PFORT Verifier, in Software Practice  and  Experience
     4, pp. 369-377, Wiley & Sons

9.   Schumaker, L., 1981, Spline Functions:  Basic Theory, Wiley & Sons, 1

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 117
                              Acknowledgements

          MICROSCOPE  was  developed  over  several  years  and has evolved
through several preliminary versions.  This process was shaped by the  work
of  the Computer Aided Geometric Design Group at the Mathematics Department
of the University of Utah and has benefited from the interactions with Paul
Arner,  R.E.  Barnhill,  Nelson  Beebe,  Gerald  Farin,  Tom  Jensen,  Chip
Petersen, Bruce Piper, Tracy Whelan, Andrew Worsey, and others.

          This  work was supported partly by the Department of Energy under
Contract No.  DE-AC02-82ER12046 A000 to the  University  of  Utah,  by  the
United  States Army under Contract No.  DAAG29-80C-0041, by two grants from
the University of Utah Research Committee, and by a sabbatical leave of the
first  author  from  the  University  of Utah.  A large part of the program
development, and this documentation, were carried out  at  the  Mathematics
Research Center at the University of Wisconsin.  Fred Sauer of MRC has been
most helpful with all computer related problems.

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 118
                                   INDEX

Abramowitz, 13, 116      CWINDOW, 51, 60-62            76-78, 83-84,
ACCENT, 51, 54-55,       D,   7, 14, 22-32,            93-98, 105-7,
     108                      38-43, 46-49,            109, 111-12,
Alfeld, 1, 7, 30,             51-53, 56-57,            115; see also
     92, 116                  59, 64, 67, 83,          function
alpha, 83-85, 87,             85-86, 88,          DIVIDE, 51, 60-62
     89-90                    111-14, 116         DMNSN, 38, 51, 54,
Barnhill, 8, 116-17      d,   10-11, 16, 18,           58, 65
Beebe, 6, 8, 69, 78,          51, 54-55,          DOCUMENT, 6, 116
     116-17                   59-60, 99-100       DOUBLE, 34, 51,
bivariate, 9, 16, 30     D1CHDIR, 51, 59               60-62, 73, 104,
BLSCRN, 77               D2CHDIR, 51, 59               111
de Boor, 21, 116         D3CHDIR, 51, 59          DSCALE, 39, 51,
C1CROSS, 51, 65-66       DCENTER, 51, 54-55,           54-55, 72
C2CROSS, 51, 65-66            72                  DXAXIS, 51, 54-55,
C3CROSS, 51, 65-66       Delta, 10, 40, 45,            72
CBD, 104                      49-50, 83-85,       e,   8-11, 15-19,
CBDSW, 104                    89-91                    21-22, 27-28,
CBDU, 104                DEN, 94                       34, 37-39, 52,
CCHANNL, 51, 63,         derivative, 3, 5,             54-55, 58-61,
     67-68                    9-11, 14-16,             63-64, 68-69,
CDIRCTN, 51, 65-66            19, 21, 24-27,           71, 78, 82-83,
CHVALUE, 51, 65-66            30-32, 37-60,            89, 92, 94, 98,
Clough-Tocher, 30,            64-66, 70,               104-5, 107,
     116                      73-74, 82,               110-11, 113
CLSCRN, 77                    84-86, 88-91,       EGRAPH, 40, 51,
command, 3, 5-6,              98, 105-6, 109,          54-55, 108
     17-18, 22, 33,           113-14              eps, 7, 83
     35-38, 41,          DF,  105-6               eta, 38, 42-43,
     44-74, 78-79,       DGRAPH, 39, 51,               82-84, 89-90,
     92-94, 101-2,            54-55, 108               110-13
     104, 107-11         Dirac, 10, 45, 84        examination, 3, 10,
CORDER, 51, 65-66        direction, 3, 10-11,          14-16, 19, 23,
Courant, 45, 116              14-16, 18,               28, 31, 42,
critical, 9-10, 27,           22-32, 38-43,            50-53, 55,
     85; see also             46-49, 51-53,            58-59, 63-64,
     set                      55-60, 63-68,            66, 68, 71-72,
cross, 3, 14-16,              72-74, 96, 99,           74, 82, 95-96,
     18-19, 24, 30,           104, 106-8,              99, 110, 114
     44, 51-53, 58,           111-14; see         EXIT, 51, 62-63, 68
     63-66, 68,               also                External, 10
     72-74, 104,              investigation       F,   10-13, 34, 73,
     106, 109; see       display, 3-6, 8-11,           78, 82, 110-11,
     also                     13-20, 22-35,            116
     derivative,              37-42, 44, 46,      FLIP, 51, 54-56
     direction                49-51, 53-61,       Font, 77
CRT, 8, 10, 13, 15            63, 65-66,          FORCE, 33, 51-52,
cusp, 9, 49, 114              69-72, 74,               54, 61-64, 73,
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 119
                                   INDEX

     92, 109                  51-53, 55,               66, 108
front, 7, 10, 66,             58-60, 63-64,       NUM, 94
     112                      66, 68, 72, 74,     NUMRCL, 34-35, 109
FS,  96, 100, 105,            95-98, 107-8,       nw,  96-97, 99,
     108                      112                      101-4
function, 2-5, 8-10,     IPOINT, 51, 58           OUTPUT, 34-35, 52,
     13-17, 19-22,       ITYPE, 92-94                  65, 107
     24, 26-31,          k,   11, 13, 15-16,      P,   10-13, 16, 45,
     34-36, 38, 40,           45, 50-55, 57,           51-53, 58, 73,
     42-50, 55-56,            65-66, 70,               99-100
     61-64, 66, 71,           82-91               P1CHPNT, 52, 58
     73-74, 82-84,       LC,  75-76, 80-81        P2CHPNT, 52, 58
     89-93, 95-98,       LCBD, 104                P3CHPNT, 52, 58
     100, 105,           LCROSS, 51, 65-66        package, 3-4, 6-9,
     110-14, 116         LDEF, 100, 105                13, 17, 20, 35,
Gateaux, 18              LDRCTN, 51, 59                38, 64, 68-69,
GO,  18, 33, 38,         LGO, 92-94, 107               75-79, 92-94,
     51-52, 54, 58,      LINES, 34-35, 107             104, 110-14
     61-64, 73, 80,      LIST, 51, 64-65          PAUSE, 52, 67-68
     92, 94              LOG, 51, 65, 105         PCURSR, 77
GRAPHC, 34               LPOINT, 51, 58-59        PEN07, 70, 75, 78
h,   5, 11-12, 14,       LSCRN, 93, 107           PEN18, 70, 75, 78
     16, 22-32,          MANLC, 75, 80-81         PFORT, 8, 116; see
     38-43, 46-52,       MANUAL, 75, 79-81             also Verifier,
     56-57, 60-61,       MANUC, 75, 80-81              Portable,
     63-64, 66-67,       MCRSCP, 3, 33-35,             Portability
     83, 85, 87-91,           58, 62-63, 68,      PLCHRS, 77
     95-97, 102,              74, 76, 92-93,      PLOT, 3, 34-35, 37,
     104, 108,                101, 104                 52, 69-72, 74,
     113-14              MICROSCOPE, 1-4,              77-78, 109-10
HALVE, 41, 51, 60-62          6-8, 10-11,         PLOT79, 3-4, 8, 35,
Harris, 1, 92                 13-14, 17-23,            52, 54, 69-72,
HELP, 34, 51, 58,             25, 32-45, 49,           77-78, 80,
     64-65, 79, 109           52-54, 57-79,            115-16
HELPLC, 75, 79-81             84, 87, 92-110,     PLTDMY, 75, 78,
HELPUC, 75, 79, 81            117                      80-81
Hershey, 77; see         Mode, 3, 35-37,          PLTLC, 75, 77-78,
     also Font                52-53, 57, 65,           80-81
Hilbert, 45, 116              68-69, 73, 94,      PLTUC, 75, 77-78, 81
HSUMRY, 51, 64-65,            107, 110-11         point, 3, 6, 10-11,
     79, 109             multivariate, 1-3,            13-16, 18-19,
ICBD, 104                     8-9, 18-19, 44,          22-32, 35,
IDIRCTN, 51, 59               112                      37-43, 45-49,
IHVALUE, 51, 60-62       MULTPLY, 52, 60-62            51-59, 62-64,
IINTVL, 38, 51,          NEWS, 52, 64-65               66-68, 70-74,
     58-59               nh,  96, 99, 101-4,           77-78, 82-85,
investigation, 3, 7,          107                      95-100, 105-8,
     10, 14-19, 35,      NORMAL, 52, 59-60,            111-14; see
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> page 120
                                   INDEX

     also                     51, 54-55,          terminal, 8, 10, 15,
     examination              63-64, 72, 74,           17, 19, 33-34,
pole, 9, 113-14               106, 108                 54, 68, 77-78,
Portability, 6, 33,      Schumaker, 21, 116            101, 105, 107
     75                  SCREEN, 75-77,           test, 4-9, 38, 44,
Portable, 2, 8, 33,           80-81, 93, 107,          64, 78, 110-14;
     75-76, 79, 116           109                      see also
POS, 75-76, 80-81        screen, 6, 8, 10,             package
precision, 3, 6,              13, 17-18,          TNOTE, 52, 65
     28-29, 36, 73,           33-39, 51-54,       trial, 8-10, 13-16,
     104                      57-58, 61-65,            19, 34-36, 38,
primitive, 8, 10,             69, 72, 76-78,           40, 42, 44, 49,
     21-22, 27, 44;           80-81, 92, 94,           60-63, 66,
     see also                 101, 105-8, 110          73-74, 82, 89,
     function            SCROLL, 75-77, 81             110-12, 114;
PROMPT, 34-35            scroll, 33, 94                see also
PS,  99-100              set, 7, 9-10, 14-15,          function
psi, 85, 89-90                17-18, 27-28,       trivariate, 9, 116
QUIT, 52, 62-63               34, 42, 59,         TYPE, 37, 42, 52, 54,
random, 7, 10,                63-66, 75, 84,           57
     23-24, 45, 83,           92, 94, 99,         UC,  75-76, 81
     112                      102, 104, 107-8     UNDO, 52, 62, 64, 107
RCROSS, 52, 65-66,       SETDF, 52, 62-63,        USER, 37-38, 52,
     68                       111                      62-63, 73-74,
RDIRCTN, 52, 59, 68      SETPEN, 70-71                 78, 104, 109-11
RESTART, 34, 52,         SETPN, 71                USRDMY, 75, 78
     62-63, 111          SHIFT, 39, 52, 58-59     USRLC, 75, 78,
ROPPNT, 100, 107-8       spline, 21, 111, 116          80-81, 110
ROPUDI, 100, 108         ss,  95-99, 101-2,       USRUC, 75, 78, 81,
ROTATE, 52, 59                104                      110
round-off, 3-5, 10,      Stegun, 13, 116          Verifier, 8, 116
     13, 22-24,          STORE, 52, 62-63,        w,   16, 49-50, 60,
     28-32, 35, 42,           111                      63-64, 85
     44-45, 60-61,       STPEN, 71                WAIT, 52, 62-63
     82-90, 94, 112      SUBUSR, 35, 73-74,       WIDTH, 34-35, 107
RPOINT, 52, 58-59,            78, 110             width, 5, 15-16, 19,
     68                  SUPPRT, 75-76, 80-81          35, 41, 49-52,
RSCREEN, 33, 52, 54,     surface, 9, 19                60-61, 63-64,
     58, 94              sw,  95-98, 100-102,          74, 85, 95-98,
RWIND, 52, 67-68              108                      101-4, 108, 113
Ryder, 8, 116            tangential, 11,          window, 3, 5, 16,
s,   11, 14, 16,              14-16, 18-19,            19, 41-42, 46,
     22-32, 38-43,            44-45, 54-55,            49-52, 60-61,
     46-50, 56-57,            66, 70-71,               63-64, 66, 74,
     60, 67, 84-85,           73-74, 82, 92,           85, 89, 98,
     95, 101-2, 110,          97, 109; see             101, 108, 113
     113-14                   also derivative     XS,  96, 99-100, 105
scale, 15, 39, 41,       TCENTER, 52, 54, 57      ZOOM, 52, 60-62