[comp.sources.amiga] v89i086: plplot - scientific plotting library, Part01/07

page%rishathra@Sun.COM (Bob Page) (04/25/89)

Submitted-by: amr@dukee.egr.duke.edu (Tony Richardson)
Posting-number: Volume 89, Issue 86
Archive-name: applications/plplot.1

PLPLOT is a library of C functions useful for scientific plotting on
the Amiga personal computer.  Contour plotting, three dimensional
plotting, axis redefinition, log-log plotting and multiple subpages
are a few of PLPLOT's features.  The plots can be displayed on your
monitor or a graphics file can be created which can be sent to a hard
copy device.

# This is a shell archive.
# Remove anything above and including the cut line.
# Then run the rest of the file through 'sh'.
# Unpacked files will be owned by you and have default permissions.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar: SHell ARchive
# Run the following text through 'sh' to create:
#	Amiga.c
#	README
#	UpdateLib
#	declare.h
#	define.c
#	fatal.c
#	fcnvrt.c
#	font01.c
# This is archive 1 of a 7-part kit.
# This archive created: Thu Apr 20 13:46:55 1989
echo "extracting Amiga.c"
sed 's/^X//' << \SHAR_EOF > Amiga.c
X#include "plplot.h"
X#include <dos.h>
X#include <stdio.h>
X#include <exec/types.h>
X#include <exec/ports.h>
X#include <graphics/display.h>
X#include <intuition/intuition.h>
X#include <intuition/intuitionbase.h>
X#include <intuition/screens.h>
X
Xstruct NewScreen NewScreen = {
X   0,		/* LeftEdge Position */
X   0,		/* TopEdge */
X   640,		/* Width (high-res) */
X   400,		/* Height (interlace) */
X   1,		/* Depth (1 color) */
X   0,1,		/* DetailPen and BlockPen */
X   HIRES|INTERLACE,
X   CUSTOMSCREEN,
X   NULL,		/* Use default font */
X   NULL,		/* Don't want a title */
X   NULL,		/* Gadgets?? */
X   NULL		/* No CustomBitMap */
X};
X	
Xstruct NewWindow NewWindow = {
X   0,0,640,400,
X   -1,-1,
X   MENUPICK|VANILLAKEY,
X   SMART_REFRESH|BACKDROP|BORDERLESS|ACTIVATE,
X   NULL,	/* Window Gadget Pointer */
X   NULL,	/* Checkmark image */
X   NULL,	/* No Title */
X   NULL,	/* My Screen Pointer (this is set below) */
X   NULL, /* Not a SuperBitMap */
X   0,0,0,0,
X   CUSTOMSCREEN
X};
X
Xstruct IntuiText IText[] = {
X   { 0, 1, JAM1, 0, 0, NULL, "Screen to Back" },
X   { 0, 1, JAM1, 0, 0, NULL, "Clear Screen" },
X   { 0, 1, JAM1, 0, 0, NULL, "Close Screen" },
X   { 0, 1, JAM1, 0, 0, NULL, "Interrupt  <CTRL-C>"},
X   { 0, 1, JAM1, 0, 0, NULL, "Continue   <Return>"}
X};
X
Xstruct MenuItem MenuItem[] = {
X   {
X      &MenuItem[1],
X      0, 0, (140 + COMMWIDTH), 9,
X      ITEMTEXT | COMMSEQ | ITEMENABLED | HIGHCOMP,
X      0,
X      (APTR)&IText[0],
X      NULL,
X      'F',
X      NULL,
X      NULL
X   },
X   {
X      &MenuItem[2],
X      0, 9, (140 + COMMWIDTH), 9,
X      ITEMTEXT | COMMSEQ | HIGHCOMP,
X      0,
X      (APTR)&IText[1],
X      NULL,
X      'C',
X      NULL,
X      NULL
X   },
X   {
X      NULL,
X      0, 18, (140 + COMMWIDTH), 9,
X      ITEMTEXT | COMMSEQ | HIGHCOMP,
X      0,
X      (APTR)&IText[2],
X      NULL,
X      'Q',
X      NULL,
X      NULL
X   },
X   {
X      &MenuItem[4],
X      0, 0, (140 + COMMWIDTH), 9,
X      ITEMTEXT | ITEMENABLED | HIGHCOMP,
X      0,
X      (APTR)&IText[3],
X      NULL,
X      NULL,
X      NULL,
X      NULL
X   },
X   {
X      NULL,
X      0, 9, (140 + COMMWIDTH), 9,
X      ITEMTEXT | HIGHCOMP,
X      0,
X      (APTR)&IText[4],
X      NULL,
X      NULL,
X      NULL,
X      NULL
X   }
X};
X	
Xstruct Menu Menu[] = {
X   {
X      &Menu[1],
X      0, 0, 140, 0,
X      MENUENABLED,
X      "Screen Control",
X      &MenuItem[0]
X   },		
X   {
X      NULL,
X      140, 0, 140, 0,
X      MENUENABLED,
X      "Graphics Control",
X      &MenuItem[3]
X   }
X};
X
Xextern long IntuitionBase;
Xextern long GfxBase;
Xstatic struct Screen *Screen;
Xstatic struct Window *Window;
Xstatic struct Border Border;
Xstatic short xy[4];
X
X/* Open Borderless Full Screen Window for Drawing */
Xvoid amiini()
X{
X   LONG OpenLibrary(), OpenScreen(), OpenWindow();
X
X   IntuitionBase = OpenLibrary("intuition.library",0);
X   if(IntuitionBase == NULL) {
X      printf("Couldn't open intuition library");
X      exit(1);
X   }
X	
X   GfxBase = OpenLibrary("graphics.library",0);
X   if(GfxBase == NULL) {
X      printf("Couldn't open graphics library");
X      exit(1);
X   }
X	
X   if((Screen = (struct Screen *)OpenScreen(&NewScreen)) == NULL) {
X      printf("Couldn't open custom screen");
X      exit(1);
X   }
X	
X   ShowTitle(Screen,FALSE);
X
X   NewWindow.Screen = Screen;	/* Pointer to CustomScreen */
X	
X   if((Window = (struct Window *)OpenWindow(&NewWindow)) == NULL) {
X      printf("Couldn't open window.\n");
X      exit(1);
X   }
X	
X   Border.LeftEdge = 0;
X   Border.TopEdge = 0;
X   Border.FrontPen = 1;
X   Border.BackPen = 0;
X   Border.DrawMode = JAM1;
X   Border.Count = 2;
X   Border.NextBorder = NULL;
X   Border.XY = xy;
X	
X   SetMenuStrip(Window,Menu);
X}
X
Xvoid amitex()
X{
X   /* I don't have a text mode on the custom screen */
X}
X
Xvoid amigra()
X{
X}
X
Xvoid amicol(color)
Xint color;
X{
X   /* No color support at present -- maybe in the next release */
X}
X
X/* Clear the screen */
Xvoid amiclr()
X{
X   SetRast(Window->RPort,0);
X}		
X
X/* Draw the line.  Also check for interrupts. */
Xvoid amilin(x1,y1,x2,y2)
Xint x1, y1, x2, y2;
X{
X   int ItemNumber, MenuNumber;
X   ULONG class;
X   USHORT code, qualifier;
X   struct IntuiMessage *message;
X   struct MenuItem *Item, *ItemAddress();
X	struct Message *GetMsg();
X   void beepw();
X
X   xy[0] = x1;
X   xy[1] = 399-y1;
X   xy[2] = x2;
X   xy[3] = 399-y2;
X	
X   if((xy[0] == xy[2]) && (xy[1] == xy[3]))
X      WritePixel(Window->RPort,xy[0],xy[1]);
X   else
X      DrawBorder(Window->RPort,&Border,0,0);
X	
X   /* Check for user abort via CTRL-C or menu ABORT selection */
X   /* and also Screen to Back Selection */
X   /* All other messages are replied to but ignored. */
X   while((message = (struct IntuiMessage *)
X                     GetMsg(Window->UserPort))!=NULL) {
X      class = message->Class;
X      code = message->Code;
X      qualifier = message->Qualifier;
X      ReplyMsg(message);
X      if(class == VANILLAKEY) {
X         if(code == 3)
X            beepw();
X      }
X      else if(class == MENUPICK) {
X         while (code != MENUNULL) {
X               Item = ItemAddress(Menu,code);
X            MenuNumber = MENUNUM(code);
X            ItemNumber = ITEMNUM(code);
X            if((MenuNumber == 0) && (ItemNumber == 0))
X               ScreenToBack(Screen);
X            else if((MenuNumber == 1) && (ItemNumber == 0))
X               beepw();
X            code = Item->NextSelect;
X         }
X      }
X   }
X}
X
Xvoid amitid()
X{
X   ClearMenuStrip(Window);
X   CloseWindow(Window);
X   CloseScreen(Screen);
X}
X
Xvoid beepw()
X{
X   int ItemNumber, MenuNumber;
X   ULONG class;
X   USHORT code, qualifier;
X   struct IntuiMessage *message;
X   struct MenuItem *Item, *ItemAddress();
X	struct Message *GetMsg();
X
X   OnMenu(Window,SHIFTMENU(0)+SHIFTITEM(1));
X   OnMenu(Window,SHIFTMENU(0)+SHIFTITEM(2));
X   OnMenu(Window,SHIFTMENU(1)+SHIFTITEM(1));
X   OffMenu(Window,SHIFTMENU(1)+SHIFTITEM(0));
X   for(;;) {
X      Wait(1L << Window->UserPort->mp_SigBit);
X      while((message = (struct IntuiMessage *)
X                        GetMsg(Window->UserPort))!=NULL) {
X         class = message->Class;
X         code = message->Code;
X         qualifier = message->Qualifier;
X         ReplyMsg(message);
X         if(class == VANILLAKEY) {
X            if(code == 13) {
X               OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(1));
X               OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(2));
X               OffMenu(Window,SHIFTMENU(1)+SHIFTITEM(1));
X               OnMenu(Window,SHIFTMENU(1)+SHIFTITEM(0));
X               return;
X            }
X         }
X         else if(class == MENUPICK) {
X            while (code != MENUNULL) {
X               Item = ItemAddress(Menu,code);
X               MenuNumber = MENUNUM(code);
X               ItemNumber = ITEMNUM(code);
X               if(MenuNumber == 0) {
X                  if(ItemNumber == 0)
X                     ScreenToBack(Screen);
X                  else if(ItemNumber == 1)
X                     SetRast(Window->RPort,0);
X                  else if(ItemNumber == 2) {
X                     ClearMenuStrip(Window);
X                     CloseWindow(Window);
X                     CloseScreen(Screen);
X                     goto AllDone;
X                  }
X               }
X               else if(MenuNumber == 1) {
X                  if (ItemNumber == 1) {
X                     OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(1));
X                     OffMenu(Window,SHIFTMENU(0)+SHIFTITEM(2));
X                     OffMenu(Window,SHIFTMENU(1)+SHIFTITEM(1));
X                     OnMenu(Window,SHIFTMENU(1)+SHIFTITEM(0));
X                     return;
X                  }
X               }
X               code = Item->NextSelect;
X            }
X         }
X      }
X   }
X
XAllDone:
X   plend();
X   exit(1);
X}
X
X
SHAR_EOF
echo "extracting README"
sed 's/^X//' << \SHAR_EOF > README
XPLPLOT is a library of C functions useful for scientific plotting on the 
XAmiga personal  computer.  The  library  is  Lattice C  compatible.  For 
Xthose of you with  another compiler or who  want to modify the code  the 
Xsource is provided in directory src.
X
XContour plotting, three dimensional plotting, axis redefinition, log-log 
Xplotting  and  multiple  subpages are a few of  PLPLOT's  features.  The 
Xplots can be displayed on your monitor or a graphics file can be created
Xwhich can be sent to a hard copy device.
X
XTo see some of the features of this package I suggest you go to examples 
Xdirectory, READ THE README FILE THERE, and  then  compile and run one of 
Xthe example programs.
X
XThe documentation is in the docs  directory  and is written in LaTeX.  I 
Xapologize to those who don't  have  AmigaTeX or easy  access to  TeX  on  
Xanother machine.
X
XThis is Version 1.00 of PLPLOT for the Amiga.  I had hoped to add a few
Xmore features to the package before releasing, but  this work seems  to
Xhave taken a back seat to work on my dissertation at present.  The wish 
Xlist includes:
X
X(1) Color support for the Amiga screen driver.  I have  written drivers
X    for a few hard copy devices  that do  provide  color support and it
X    would be pretty easy to do on the Amiga. I don't have a need for it
X    though and it does require more memory.
X
X(2) Device independence.  I would like to have PLPLOT produce a  device
X    independent file and then have  separate drivers that use this file
X    to generate  hard  copy.  Presently  new drivers must be integrated
X    into the package.  This would take a little time to  accomplish and
X    I don't see myself doing it in the near future.
X
XThis is FREEWARE.  It's my way of saying thank  you to those people who
Xhave  written  freeware  for the  Amiga  in  the  past.  Feel  free  to 
Xredistribute this package to anyone who  wants  it.  I do ask that only  
Xthis version  (unaltered)  be  distributed  and  that  the  package  be
Xdistributed in its entirety (including the documentation).
X
XLet me know if you have any comments, find  any bugs, or are willing to
Xwork on translating the package for use with another compiler. I prefer 
Xbeing contacted by mail, either electronic or US.
X
XTony Richardson
X
Xemail    amr@dukee.egr.duke.edu
X
XUS-Mail  Tony Richardson
X         Duke University
X         Dept. of Elect. Eng.
X         Durham, N.C. 27706
X
Xphone    919-684-3123 (work)   919-286-7101 (home)
X
SHAR_EOF
echo "extracting UpdateLib"
sed 's/^X//' << \SHAR_EOF > UpdateLib
Xlist >ram:plname ram:pltemp lformat="%s%s"
Xoml lib/plplot.lib r @ram:plname
Xdelete ram:plname quiet
Xdelete ram:pltemp all quiet
X
SHAR_EOF
echo "extracting declare.h"
sed 's/^X//' << \SHAR_EOF > declare.h
X/*
X* Global variables for C plotting package
X*
X* device  :  Graphics device number
X* termin  :  Zero for noninteractive device, non-zero for terminal
X* graphx  :  Zero if currently in text mode, non-zero for graphics mode
X* currx   :  Physical x-coordinate of current point
X* curry   :  Physical y-coordinate of current point
X* vpp...  :  Viewport boundaries in physical coordinates
X* spp...  :  Subpage  boundaries in physical coordinates
X* clp...  :  Clip     boundaries in physical coordinates
X* phy...  :  Physical device limits in physical coordinates
X* nsub.   :  Number of subpages on physical device
X* cursub  :  Current subpage
X* um.     :  Number of micrometres in a pixel
X* font    :  Current default font
X* colour  :  Current default colour
X* mark    :  Array of mark lengths in micrometres for broken lines
X* space   :  Array of space lengths in micrometres for broken lines
X* nms     :  Number of elements for current broken line style
X* timecnt :  Timer for broken lines
X* alarm   :  Alarm indicating change of broken line status
X* pendn   :  Flag indicating if pen is up or down
X* curel   :  Current element within broken line
X* level   :  Initialization level
X*
X* spd...  :  Subpage  boundaries in normalized device coordinates
X* vpd...  :  Viewport boundaries in normalized device coordinates
X* vpw...  :  Viewport boundaries in world coordinates
X* .pmm    :  Number of pixels to a millimetre
X* wp....  :  Transformation variables for world  to physical conversion
X* dp....  :  Transformation variables for device to physical conversion
X* mp....  :  Transformation variables for millimetres from bottom left
X*             hand corner to physical coordinates
X* wm....  :  Transformation variables for world coordinates to mm
X* chr...  :  Character default height and current (scaled) height
X* sym...  :  Symbol    default height and current (scaled) height
X* maj...  :  Major tick default height and current (scaled) height
X* min...  :  Minor tick default height and current (scaled) height
X* base3.  :  World coordinate size of base for 3-d plot
X* basec.  :  Position of centre of base for 3-d plot
X* dom...  :  Minimum and maximum values for domain
X* zzscl   :  Vertical (z) scale for 3-d plot
X* ran..   :  Minimum and maximum z values for 3-d plot
X* c..     :  Coordinate transformation from 3-d to 2-d
X*/
X
Xextern int device, termin, graphx;
Xextern int currx,  curry;
Xextern int vppxmi, vppxma, vppymi, vppyma;
Xextern int sppxmi, sppxma, sppymi, sppyma;
Xextern int clpxmi, clpxma, clpymi, clpyma;
Xextern int phyxmi, phyxma, phyymi, phyyma;
Xextern int nsubx,  nsuby, cursub;
Xextern int umx,    umy;
Xextern int font,   colour, style;
Xextern int mark[], space[], nms, timecnt;
Xextern int alarm,  pendn,  curel;
Xextern int level;
X
Xextern int *heap3;
Xextern int *heapc;
X
Xextern float spdxmi, spdxma, spdymi, spdyma;
Xextern float vpdxmi, vpdxma, vpdymi, vpdyma;
Xextern float vpwxmi, vpwxma, vpwymi, vpwyma;
Xextern float xpmm,   ypmm;
Xextern float wpxscl, wpxoff, wpyscl, wpyoff;
Xextern float dpxscl, dpxoff, dpyscl, dpyoff;
Xextern float mpxscl, mpxoff, mpyscl, mpyoff;
Xextern float wmxscl, wmxoff, wmyscl, wmyoff;
Xextern float chrdef, chrht;
Xextern float symdef, symht;
Xextern float majdef, majht;
Xextern float mindef, minht;
Xextern float base3x, base3y, basecx, basecy;
Xextern float domxmi, domxma, domymi, domyma;
Xextern float zzscl,  ranmi,  ranma;
Xextern float cxx,    cxy,    cyx,    cyy,   cyz;
SHAR_EOF
echo "extracting define.c"
sed 's/^X//' << \SHAR_EOF > define.c
X/*
X* Global variables for C plotting package
X*
X* device  :  Graphics device number
X* termin  :  Zero for noninteractive device, non-zero for terminal
X* graphx  :  Zero if currently in text mode, non-zero for graphics mode
X* currx   :  Physical x-coordinate of current point
X* curry   :  Physical y-coordinate of current point
X* vpp...  :  Viewport boundaries in physical coordinates
X* spp...  :  Subpage  boundaries in physical coordinates
X* clp...  :  Clip     boundaries in physical coordinates
X* phy...  :  Physical device limits in physical coordinates
X* nsub.   :  Number of subpages on physical device
X* cursub  :  Current subpage
X* um.     :  Number of micrometres in a pixel
X* font    :  Current default font
X* colour  :  Current default colour
X* mark    :  Array of mark lengths in micrometres for broken lines
X* space   :  Array of space lengths in micrometres for broken lines
X* nms     :  Number of elements for current broken line style
X* timecnt :  Timer for broken lines
X* alarm   :  Alarm indicating change of broken line status
X* pendn   :  Flag indicating if pen is up or down
X* curel   :  Current element within broken line
X* level   :  Initialization level
X*
X* spd...  :  Subpage  boundaries in normalized device coordinates
X* vpd...  :  Viewport boundaries in normalized device coordinates
X* vpw...  :  Viewport boundaries in world coordinates
X* .pmm    :  Number of pixels to a millimetre
X* wp....  :  Transformation variables for world  to physical conversion
X* dp....  :  Transformation variables for device to physical conversion
X* mp....  :  Transformation variables for millimetres from bottom left
X*             hand corner to physical coordinates
X* wm....  :  Transformation variables for world coordinates to mm
X* chr...  :  Character default height and current (scaled) height
X* sym...  :  Symbol    default height and current (scaled) height
X* maj...  :  Major tick default height and current (scaled) height
X* min...  :  Minor tick default height and current (scaled) height
X* base3.  :  World coordinate size of base for 3-d plot
X* basec.  :  Position of centre of base for 3-d plot
X* dom...  :  Minimum and maximum values for domain
X* zzscl   :  Vertical (z) scale for 3-d plot
X* ran..   :  Minimum and maximum z values for 3-d plot
X* c..     :  Coordinate transformation from 3-d to 2-d
X*/
X
X#include <stdio.h>  /* Just for NULL definition */
X
Xint device, termin, graphx;
Xint currx,  curry;
Xint vppxmi, vppxma, vppymi, vppyma;
Xint sppxmi, sppxma, sppymi, sppyma;
Xint clpxmi, clpxma, clpymi, clpyma;
Xint phyxmi, phyxma, phyymi, phyyma;
Xint nsubx,  nsuby, cursub;
Xint umx,    umy;
Xint font,   colour, style;
Xint mark[10], space[10], nms, timecnt;
Xint alarm,  pendn,  curel;
Xint level=0;
X
Xint *heap3=NULL;
Xint *heapc=NULL;
X
Xfloat spdxmi, spdxma, spdymi, spdyma;
Xfloat vpdxmi, vpdxma, vpdymi, vpdyma;
Xfloat vpwxmi, vpwxma, vpwymi, vpwyma;
Xfloat xpmm,   ypmm;
Xfloat wpxscl, wpxoff, wpyscl, wpyoff;
Xfloat dpxscl, dpxoff, dpyscl, dpyoff;
Xfloat mpxscl, mpxoff, mpyscl, mpyoff;
Xfloat wmxscl, wmxoff, wmyscl, wmyoff;
Xfloat chrdef, chrht;
Xfloat symdef, symht;
Xfloat majdef, majht;
Xfloat mindef, minht;
Xfloat base3x, base3y, basecx, basecy;
Xfloat domxmi, domxma, domymi, domyma;
Xfloat zzscl,  ranmi,  ranma;
Xfloat cxx,    cxy,    cyx,    cyy,   cyz;
SHAR_EOF
echo "extracting fatal.c"
sed 's/^X//' << \SHAR_EOF > fatal.c
X#include "plplot.h"
X
Xvoid fatal(text)
Xchar *text;
X{
X      plend();
X      printf("\nERROR - PLPLOT: %s",text);
X      exit(1);
X}
SHAR_EOF
echo "extracting fcnvrt.c"
sed 's/^X//' << \SHAR_EOF > fcnvrt.c
X/* Coordinate transformations for plotting package */
X
X#include "plplot.h"
X#include "declare.h"
X#include <math.h>
X
X/* dcmm. converts from device coordinates to millimetres from bottom */
X/* left-hand corner */
X
Xfloat dcmmx(x)
Xfloat x;
X{
X      return((float)(x * abs(phyxma-phyxmi) / xpmm));
X}
X
Xfloat dcmmy(y)
Xfloat y;
X{
X      return((float)(y * abs(phyyma-phyymi) / ypmm));
X}
X
X/* dcsc. define transformations between device coordinates and subpage */
X/* coordinates */
X
Xfloat dcscx(x)
Xfloat x;
X{
X      return((float)((x - spdxmi)/(spdxma-spdxmi)));
X}
X
Xfloat dcscy(y)
Xfloat y;
X{
X      return((float)((y - spdymi)/(spdyma-spdymi)));
X}
X
X/* mmdc. converts millimetres from bottom left corner into device */
X/* coordinates */
X
Xfloat mmdcx(x)
Xfloat x;
X{
X      return((float)(x * xpmm / abs(phyxma - phyxmi)));
X}
X
Xfloat mmdcy(y)
Xfloat y;
X{
X      return((float)(y * ypmm / abs(phyyma - phyymi)));
X}
X
X/* scdc. converts subpage coordinates to device coordinates */
X
Xfloat scdcx(x)
Xfloat x;
X{
X      return((float)(spdxmi + (spdxma-spdxmi) * x));
X}
X
Xfloat scdcy(y)
Xfloat y;
X{
X      return((float)(spdymi + (spdyma-spdymi) * y));
X}
X
X/* wcmm. converts world coordinates into millimetres */
X
Xfloat wcmmx(x)
Xfloat x;
X{
X      return((float)(wmxoff + wmxscl*x));
X}
X
Xfloat wcmmy(y)
Xfloat y;
X{
X      return((float)(wmyoff + wmyscl*y));
X}
X
Xfloat w3wcx(x,y,z)
Xfloat x, y, z;
X{
X      return((float)((x-basecx)*cxx + (y-basecy)*cxy));
X}
X
Xfloat w3wcy(x,y,z)
Xfloat x, y, z;
X{
X      return((float)((x-basecx)*cyx+(y-basecy)*cyy+(z-ranmi)*cyz));
X}
X
X
SHAR_EOF
echo "extracting font01.c"
sed 's/^X//' << \SHAR_EOF > font01.c
X/*      integer findex(3000)  */
X/*      integer*2 buffer(27000)  */
X/*      integer*2 hersh(0:175,4)  */
X
X/*      common /hersh1/ findex  */
X/*      common /hersh2/ buffer  */
X/*      common /hersh3/ hersh  */
X
X extern int 
X   subindex00[], subindex01[], subindex02[], subindex03[], subindex04[],
X   subindex05[], subindex06[], subindex07[], subindex08[], subindex09[],
X   subindex10[], subindex11[], subindex12[], subindex13[], subindex14[],
X   subindex15[], subindex16[], subindex17[], subindex18[], subindex19[],
X   subindex20[], subindex21[], subindex22[], subindex23[], subindex24[],
X   subindex25[], subindex26[], subindex27[], subindex28[], subindex29[];
X
X int *findex[30] = {
X   subindex00, subindex01, subindex02, subindex03, subindex04,
X   subindex05, subindex06, subindex07, subindex08, subindex09,
X   subindex10, subindex11, subindex12, subindex13, subindex14,
X   subindex15, subindex16, subindex17, subindex18, subindex19,
X   subindex20, subindex21, subindex22, subindex23, subindex24,
X   subindex25, subindex26, subindex27, subindex28, subindex29
X };
X
X extern short int 
X   subbuffer000[],subbuffer001[],subbuffer002[],subbuffer003[],
X   subbuffer004[],subbuffer005[],subbuffer006[],subbuffer007[],
X   subbuffer008[],subbuffer009[],subbuffer010[],subbuffer011[],
X   subbuffer012[],subbuffer013[],subbuffer014[],subbuffer015[],
X   subbuffer016[],subbuffer017[],subbuffer018[],subbuffer019[],
X   subbuffer020[],subbuffer021[],subbuffer022[],subbuffer023[],
X   subbuffer024[],subbuffer025[],subbuffer026[],subbuffer027[],
X   subbuffer028[],subbuffer029[],subbuffer030[],subbuffer031[],
X   subbuffer032[],subbuffer033[],subbuffer034[],subbuffer035[],
X   subbuffer036[],subbuffer037[],subbuffer038[],subbuffer039[],
X   subbuffer040[],subbuffer041[],subbuffer042[],subbuffer043[],
X   subbuffer044[],subbuffer045[],subbuffer046[],subbuffer047[],
X   subbuffer048[],subbuffer049[],subbuffer050[],subbuffer051[],
X   subbuffer052[],subbuffer053[],subbuffer054[],subbuffer055[],
X   subbuffer056[],subbuffer057[],subbuffer058[],subbuffer059[],
X   subbuffer060[],subbuffer061[],subbuffer062[],subbuffer063[],
X   subbuffer064[],subbuffer065[],subbuffer066[],subbuffer067[],
X   subbuffer068[],subbuffer069[],subbuffer070[],subbuffer071[],
X   subbuffer072[],subbuffer073[],subbuffer074[],subbuffer075[],
X   subbuffer076[],subbuffer077[],subbuffer078[],subbuffer079[],
X   subbuffer080[],subbuffer081[],subbuffer082[],subbuffer083[],
X   subbuffer084[],subbuffer085[],subbuffer086[],subbuffer087[],
X   subbuffer088[],subbuffer089[],subbuffer090[],subbuffer091[],
X   subbuffer092[],subbuffer093[],subbuffer094[],subbuffer095[],
X   subbuffer096[],subbuffer097[],subbuffer098[],subbuffer099[],
X   subbuffer100[],subbuffer101[],subbuffer102[],subbuffer103[],
X   subbuffer104[],subbuffer105[],subbuffer106[],subbuffer107[],
X   subbuffer108[],subbuffer109[],subbuffer110[],subbuffer111[],
X   subbuffer112[],subbuffer113[],subbuffer114[],subbuffer115[],
X   subbuffer116[],subbuffer117[],subbuffer118[],subbuffer119[],
X   subbuffer120[],subbuffer121[],subbuffer122[],subbuffer123[],
X   subbuffer124[],subbuffer125[],subbuffer126[],subbuffer127[],
X   subbuffer128[],subbuffer129[],subbuffer130[],subbuffer131[],
X   subbuffer132[],subbuffer133[],subbuffer134[],subbuffer135[],
X   subbuffer136[],subbuffer137[],subbuffer138[],subbuffer139[],
X   subbuffer140[],subbuffer141[],subbuffer142[],subbuffer143[],
X   subbuffer144[],subbuffer145[],subbuffer146[],subbuffer147[],
X   subbuffer148[],subbuffer149[],subbuffer150[],subbuffer151[],
X   subbuffer152[],subbuffer153[],subbuffer154[],subbuffer155[],
X   subbuffer156[],subbuffer157[],subbuffer158[],subbuffer159[],
X   subbuffer160[],subbuffer161[],subbuffer162[],subbuffer163[],
X   subbuffer164[],subbuffer165[],subbuffer166[],subbuffer167[],
X   subbuffer168[],subbuffer169[],subbuffer170[],subbuffer171[],
X   subbuffer172[],subbuffer173[],subbuffer174[],subbuffer175[],
X   subbuffer176[],subbuffer177[],subbuffer178[],subbuffer179[],
X   subbuffer180[],subbuffer181[],subbuffer182[],subbuffer183[],
X   subbuffer184[],subbuffer185[],subbuffer186[],subbuffer187[],
X   subbuffer188[],subbuffer189[],subbuffer190[],subbuffer191[],
X   subbuffer192[],subbuffer193[],subbuffer194[],subbuffer195[],
X   subbuffer196[],subbuffer197[],subbuffer198[],subbuffer199[],
X   subbuffer200[],subbuffer201[],subbuffer202[],subbuffer203[],
X   subbuffer204[],subbuffer205[],subbuffer206[],subbuffer207[],
X   subbuffer208[],subbuffer209[],subbuffer210[],subbuffer211[],
X   subbuffer212[],subbuffer213[],subbuffer214[],subbuffer215[],
X   subbuffer216[],subbuffer217[],subbuffer218[],subbuffer219[],
X   subbuffer220[],subbuffer221[],subbuffer222[],subbuffer223[],
X   subbuffer224[],subbuffer225[],subbuffer226[],subbuffer227[],
X   subbuffer228[],subbuffer229[],subbuffer230[],subbuffer231[],
X   subbuffer232[],subbuffer233[],subbuffer234[],subbuffer235[],
X   subbuffer236[],subbuffer237[],subbuffer238[],subbuffer239[],
X   subbuffer240[],subbuffer241[],subbuffer242[],subbuffer243[],
X   subbuffer244[],subbuffer245[],subbuffer246[],subbuffer247[],
X   subbuffer248[],subbuffer249[],subbuffer250[],subbuffer251[],
X   subbuffer252[],subbuffer253[],subbuffer254[],subbuffer255[],
X   subbuffer256[],subbuffer257[],subbuffer258[],subbuffer259[],
X   subbuffer260[],subbuffer261[],subbuffer262[],subbuffer263[],
X   subbuffer264[],subbuffer265[],subbuffer266[],subbuffer267[],
X   subbuffer268[],subbuffer269[];
X   
X short int *buffer[270] = {
X    subbuffer000, subbuffer001, subbuffer002, subbuffer003, subbuffer004,
X    subbuffer005, subbuffer006, subbuffer007, subbuffer008, subbuffer009,
X    subbuffer010, subbuffer011, subbuffer012, subbuffer013, subbuffer014,
X    subbuffer015, subbuffer016, subbuffer017, subbuffer018, subbuffer019,
X    subbuffer020, subbuffer021, subbuffer022, subbuffer023, subbuffer024,
X    subbuffer025, subbuffer026, subbuffer027, subbuffer028, subbuffer029,
X    subbuffer030, subbuffer031, subbuffer032, subbuffer033, subbuffer034,
X    subbuffer035, subbuffer036, subbuffer037, subbuffer038, subbuffer039,
X    subbuffer040, subbuffer041, subbuffer042, subbuffer043, subbuffer044,
X    subbuffer045, subbuffer046, subbuffer047, subbuffer048, subbuffer049,
X    subbuffer050, subbuffer051, subbuffer052, subbuffer053, subbuffer054,
X    subbuffer055, subbuffer056, subbuffer057, subbuffer058, subbuffer059,
X    subbuffer060, subbuffer061, subbuffer062, subbuffer063, subbuffer064,
X    subbuffer065, subbuffer066, subbuffer067, subbuffer068, subbuffer069,
X    subbuffer070, subbuffer071, subbuffer072, subbuffer073, subbuffer074,
X    subbuffer075, subbuffer076, subbuffer077, subbuffer078, subbuffer079,
X    subbuffer080, subbuffer081, subbuffer082, subbuffer083, subbuffer084,
X    subbuffer085, subbuffer086, subbuffer087, subbuffer088, subbuffer089,
X    subbuffer090, subbuffer091, subbuffer092, subbuffer093, subbuffer094,
X    subbuffer095, subbuffer096, subbuffer097, subbuffer098, subbuffer099,
X    subbuffer100, subbuffer101, subbuffer102, subbuffer103, subbuffer104,
X    subbuffer105, subbuffer106, subbuffer107, subbuffer108, subbuffer109,
X    subbuffer110, subbuffer111, subbuffer112, subbuffer113, subbuffer114,
X    subbuffer115, subbuffer116, subbuffer117, subbuffer118, subbuffer119,
X    subbuffer120, subbuffer121, subbuffer122, subbuffer123, subbuffer124,
X    subbuffer125, subbuffer126, subbuffer127, subbuffer128, subbuffer129,
X    subbuffer130, subbuffer131, subbuffer132, subbuffer133, subbuffer134,
X    subbuffer135, subbuffer136, subbuffer137, subbuffer138, subbuffer139,
X    subbuffer140, subbuffer141, subbuffer142, subbuffer143, subbuffer144,
X    subbuffer145, subbuffer146, subbuffer147, subbuffer148, subbuffer149,
X    subbuffer150, subbuffer151, subbuffer152, subbuffer153, subbuffer154,
X    subbuffer155, subbuffer156, subbuffer157, subbuffer158, subbuffer159,
X    subbuffer160, subbuffer161, subbuffer162, subbuffer163, subbuffer164,
X    subbuffer165, subbuffer166, subbuffer167, subbuffer168, subbuffer169,
X    subbuffer170, subbuffer171, subbuffer172, subbuffer173, subbuffer174,
X    subbuffer175, subbuffer176, subbuffer177, subbuffer178, subbuffer179,
X    subbuffer180, subbuffer181, subbuffer182, subbuffer183, subbuffer184,
X    subbuffer185, subbuffer186, subbuffer187, subbuffer188, subbuffer189,
X    subbuffer190, subbuffer191, subbuffer192, subbuffer193, subbuffer194,
X    subbuffer195, subbuffer196, subbuffer197, subbuffer198, subbuffer199,
X    subbuffer200, subbuffer201, subbuffer202, subbuffer203, subbuffer204,
X    subbuffer205, subbuffer206, subbuffer207, subbuffer208, subbuffer209,
X    subbuffer210, subbuffer211, subbuffer212, subbuffer213, subbuffer214,
X    subbuffer215, subbuffer216, subbuffer217, subbuffer218, subbuffer219,
X    subbuffer220, subbuffer221, subbuffer222, subbuffer223, subbuffer224,
X    subbuffer225, subbuffer226, subbuffer227, subbuffer228, subbuffer229,
X    subbuffer230, subbuffer231, subbuffer232, subbuffer233, subbuffer234,
X    subbuffer235, subbuffer236, subbuffer237, subbuffer238, subbuffer239,
X    subbuffer240, subbuffer241, subbuffer242, subbuffer243, subbuffer244,
X    subbuffer245, subbuffer246, subbuffer247, subbuffer248, subbuffer249,
X    subbuffer250, subbuffer251, subbuffer252, subbuffer253, subbuffer254,
X    subbuffer255, subbuffer256, subbuffer257, subbuffer258, subbuffer259,
X    subbuffer260, subbuffer261, subbuffer262, subbuffer263, subbuffer264,
X    subbuffer265, subbuffer266, subbuffer267, subbuffer268, subbuffer269
X };
X
X extern short int 
X    subhersh0[],subhersh1[],subhersh2[],subhersh3[];
X
X short int *hersh[4] = {
X    subhersh0, subhersh1, subhersh2, subhersh3
X };
X
X int subindex00[100] = {
X    1,   13,   32,   46,   61,   76,   88,  106,  118,  124,
X  134,  146,  155,  170,  182,  199,  212,  232,  248,  264,
X  273,  285,  294,  309,  318,  328,  340,  352,  371,  380,
X  392,  407,  419,  431,  454,  460,  472,  481,  496,  508,
X  523,  540,  552,  565,  578,  587,  605,  621,  630,  645,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex01[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,  661,  666,  671,  676
X };
X int subindex02[100] = {
X  691,  698,  710,  728,  738,  755,  772,  781,  803,  820,
X  829,  839,  854,  870,  885,  905,  911,  920,  933,  952,
X  958,  968,  978,  984,  990,  999, 1008, 1017, 1029, 1038,
X 1048, 1058, 1068, 1083, 1107, 1130,    0, 1154, 1169, 1204,
X    0, 1210,    0,    0,    0,    0,    0, 1219,    0, 1266,
X    0, 1297,    0, 1308,    0, 1317,    0, 1349, 1355,    0,
X 1364, 1415, 1470, 1522, 1589, 1669, 1765, 1855, 1934, 2009,
X 2038, 2096, 2138, 2200, 2249, 2264,    0, 2285, 2311, 2337,
X 2356, 2375,    0, 2394,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex03[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex04[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex05[100] = {
X 2406, 2418, 2445, 2467, 2486, 2501, 2513, 2539, 2551, 2557,
X 2571, 2583, 2592, 2607, 2619, 2644, 2661, 2689, 2709, 2733,
X 2742, 2756, 2765, 2780, 2789, 2799, 2811, 2823, 2850, 2859,
X 2871, 2886, 2898, 2910, 2938, 2944, 2956, 2965, 2980, 2992,
X 3004, 3029, 3041, 3058, 3071, 3080, 3102, 3126, 3135, 3156,
X 3176, 3199, 3243, 3270, 3308, 3339, 3370, 3402, 3443, 3471,
X 3499, 3541, 3573, 3621, 3656, 3688, 3722, 3757, 3798, 3829,
X 3857, 3893, 3928, 3956, 3995, 4036,    0,    0,    0,    0,
X    0,    0, 4079,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex06[100] = {
X 4091, 4112, 4133, 4151, 4172, 4193, 4205, 4231, 4245, 4257,
X 4272, 4284, 4290, 4312, 4326, 4347, 4368, 4389, 4401, 4422,
X 4434, 4448, 4457, 4472, 4481, 4494, 4506, 4533, 4567, 4587,
X 4614, 4636, 4662, 4684, 4714, 4726, 4748, 4760, 4784, 4801,
X 4833, 4854, 4870, 4892, 4913, 4924, 4943, 4967, 4984, 5007,
X 5033, 5058, 5084, 5101, 5128, 5148, 5175, 5206, 5238, 5257,
X 5280, 5316, 5337, 5373, 5399, 5425, 5452, 5482, 5500, 5519,
X 5538, 5560, 5580, 5608, 5631, 5657, 5683,    0,    0,    0,
X    0,    0, 5708, 5737, 5756, 5782, 5806,    0,    0,    0,
X    0,    0,    0,    0,    0,    0, 5825, 5830, 5835, 5840
X };
X int subindex07[100] = {
X 5861, 5869, 5887, 5906, 5916, 5937, 5964, 5973, 6006, 6033,
X 6042, 6054, 6069, 6087, 6099, 6123, 6129, 6138, 6155, 6185,
X 6191, 6205, 6219, 6225, 6231, 6240, 6249, 6258, 6270, 6279,
X 6290, 6301, 6313, 6328, 6366,    0, 6397, 6406, 6415, 6422,
X 6443, 6479, 6508, 6531, 6582, 6640,    0,    0,    0, 6698,
X 6719, 6738, 6750, 6781, 6810, 6827, 6840, 6854, 6870, 6884,
X 6894, 6903, 6913, 6923, 6947, 6971, 7005, 7030,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0, 7063, 7069, 7075, 7081, 7087
X };
X int subindex08[100] = {
X 7093, 7099, 7105, 7111, 7117, 7123, 7129, 7135, 7141, 7147,
X 7158, 7169, 7180, 7191, 7203, 7215, 7227, 7239, 7247, 7255,
X 7263, 7271, 7297, 7323, 7349, 7375, 7399, 7421, 7450, 7464,
X 7476, 7484, 7493, 7505,    0,    0,    0,    0,    0, 7517,
X 7538, 7547, 7555, 7564, 7579, 7588, 7597,    0,    0, 7609,
X 7647, 7677, 7697, 7717, 7737, 7757, 7782,    0,    0, 7796,
X 7812, 7826, 7843, 7864, 7888, 7902, 7919, 7954, 7967, 8004,
X 8071, 8168, 8211, 8246,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0, 8264, 8273
X };
X int subindex09[100] = {
X 8286, 8303, 8324, 8345, 8370, 8407, 8444, 8497, 8534, 8570,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex10[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex11[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex12[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex13[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex14[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex15[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex16[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex17[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex18[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex19[100] = {
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex20[100] = {
X 8604, 8625, 8673, 8708, 8741, 8766, 8789, 8832, 8862, 8877,
X 8900, 8930, 8947, 8980, 9004, 9051, 9083, 9150, 9198, 9235,
X 9254, 9280, 9298, 9325, 9349, 9372, 9391, 9412, 9460, 9477,
X 9495, 9520, 9539, 9569, 9628, 9643, 9673, 9691, 9724, 9748,
X 9787, 9834, 9858, 9890, 9913, 9932, 9968,10019,10043,10087,
X10133,10154,10198,10235,10268,10293,10316,10361,10391,10406,
X10430,10460,10477,10510,10534,10579,10609,10673,10718,10756,
X10775,10803,10821,10848,10872,10895,10914,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex21[100] = {
X10963,11005,11041,11072,11111,11145,11170,11233,11264,11285,
X11313,11343,11358,11405,11436,11475,11514,11550,11576,11611,
X11630,11661,11679,11706,11730,11755,11774,11817,11877,11908,
X11955,11990,12024,12059,12106,12124,12156,12182,12213,12240,
X12288,12323,12348,12382,12420,12439,12473,12513,12539,12576,
X12623,12665,12704,12732,12777,12806,12844,12890,12924,12953,
X12988,13025,13046,13101,13141,13176,13221,13257,13286,13317,
X13338,13378,13407,13451,13496,13540,13574,13620,13656,13694,
X13751,13810,    0,13825,13853,13899,13944,    0,    0,13974,
X14022,14094,14149,14206,14295,14386,14409,14414,14419,14424
X };
X int subindex22[100] = {
X14467,14481,14529,14579,14595,14637,14688,14722,14788,14839,
X14848,14859,14874,14891,14909,14944,14953,14968,14985,14997,
X15003,15026,15049,15064,15079,15108,15137,15144,15151,15157,
X15166,15172,15181,15193,15205,15214,15223,15241,15250,15262,
X15274,15281,15288,15301,15314,15338,15365,15376,15386,15396,
X15417,15428,15439,15450,15461,15474,15490,15506,15522,15538,
X15557,15571,15585,15599,15613,15660,15678,15691,15726,15779,
X15808,15843,15895,15954,15999,16014,16063,16096,16155,    0,
X16170,16211,16259,16289,16320,16354,16385,16418,16465,16505,
X16539,16566,16596,16611,16662,16713,16729,16745,16761,    0
X };
X int subindex23[100] = {
X16777,16820,16874,16907,16958,17009,17060,17104,17137,17173,
X17209,17248,    0,    0,    0,    0,17299,17314,17335,17356,
X17395,17434,17471,17492,17513,17541,17562,17583,17635,17664,
X17753,17859,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,17892,17907,17928,17949,
X17984,18023,18060,18081,18102,18130,18151,18172,18211,18240,
X18329,18421,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex24[100] = {
X18509,18533,18559,18590,18621,18638,18655,18696,18737,18772,
X18807,18824,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex25[100] = {
X18884,18907,18954,18995,19030,19060,19084,19131,19156,19167,
X19190,19215,19232,19261,19284,19327,19357,19408,19445,19491,
X19509,19536,19553,19582,19601,19621,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X19644,19685,19758,19802,19848,19900,19949,20005,20063,20099,
X20136,20198,20241,20293,20334,20371,20427,20473,20541,20580,
X20621,20663,20702,20746,20801,20846,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex26[100] = {
X20893,20932,20971,21006,21045,21084,21111,21162,21190,21217,
X21244,21269,21280,21325,21353,21392,21431,21470,21494,21547,
X21566,21594,21611,21640,21659,21679,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X21702,21738,21764,21789,21825,21851,21881,21922,21955,21977,
X22004,22038,22058,22106,22141,22173,22206,22244,22271,22296,
X22319,22349,22375,22414,22459,22494,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,22535,22540,22545,22550
X };
X int subindex27[100] = {
X22595,22610,22647,22698,22719,22775,22840,22855,22926,22991,
X23010,23037,23072,23115,23142,23203,23230,23257,23331,23385,
X23396,23423,23450,23492,23503,23522,23541,23555,23580,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,23613,23618,23623,23628,
X23673,23691,23736,23789,23802,23844,23893,23926,23992,24041,
X24050,24061,24075,24092,24112,24149,24160,24171,24229,24273,
X24279,24302,24325,24337,24343,24352,24361,24370,24385,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex28[100] = {
X24402,24423,24457,24505,24522,24556,24581,24655,24703,24733,
X24773,24819,24847,24880,24910,24957,24981,25013,25048,25067,
X25094,25145,25169,25199,25230,25263,25302,25336,25380,25412,
X25454,25516,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X int subindex29[100] = {
X25564,25606,25657,25697,25714,25739,25773,25835,25880,25910,
X25950,25991,26016,26049,26079,26118,26142,26181,26212,26231,
X26256,26311,26335,26361,26392,26425,26460,26490,26530,26558,
X26595,26649,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
X };
X
X short int subbuffer000[100] = {
X   -4, 7749, 7621, 8261, 7740,   64, 8261, 8764,   64, 7999,
X 8511,    0,   -4, 7749, 7621, 7877, 7868,   64, 7877, 8389,
X 8644, 8642, 8385,   64, 7873, 8385, 8640, 8637, 8380, 7868,
X    0,   -4, 7749, 7622, 8772, 8517, 8261, 8004, 7874, 7871,
X 7997, 8252, 8508, 8765,    0,   -4, 7749, 7621, 7877, 7868,
X   64, 7877, 8261, 8516, 8642, 8639, 8509, 8252, 7868,    0,
X   -4, 7749, 7621, 7877, 7868,   64, 7877, 8645,   64, 7873,
X 8385,   64, 7868, 8636,    0,   -4, 7749, 7620, 7877, 7868,
X   64, 7877, 8645,   64, 7873, 8385,    0,   -4, 7749, 7622,
X 8772, 8517, 8261, 8004, 7874, 7871, 7997, 8252, 8508, 8765
X };
X short int subbuffer001[100] = {
X 8768,   64, 8384, 8768,    0,   -4, 7749, 7621, 7877, 7868,
X   64, 8645, 8636,   64, 7873, 8641,    0,   -4, 7749, 8002,
X 8261, 8252,    0,   -4, 7749, 7747, 8389, 8382, 8252, 7996,
X 7870, 7871,    0,   -4, 7749, 7621, 7877, 7868,   64, 8645,
X 7871,   64, 8129, 8636,    0,   -4, 7749, 7620, 7877, 7868,
X   64, 7868, 8636,    0,   -4, 7749, 7494, 7749, 7740,   64,
X 7749, 8252,   64, 8773, 8252,   64, 8773, 8764,    0,   -4,
X 7749, 7621, 7877, 7868,   64, 7877, 8636,   64, 8645, 8636,
X    0,   -4, 7749, 7622, 8261, 8004, 7874, 7871, 7997, 8252,
X 8380, 8637, 8767, 8770, 8644, 8389, 8261,    0,   -4, 7749
X };
SHAR_EOF
echo "End of archive 1 (of 7)"
# if you want to concatenate archives, remove anything after this line
exit