%Paper: 
%From: kaedin%theor3.hepnet@Csa4.LBL.Gov
%Date: Wed, 17 Aug 94 13:22:08 PDT

%
%  Pascal Program for Generating Tables of SU(3) Clebsch-Gordan Coefficients
%
%  Thomas A. Kaeding
%  June 3, 1994
%
%  This file is written in LaTeX,
%  and uses Math_Macros.Tex.
%
%  Sample output and a facsimile of the figure are attached to the end
%  and are in ascii format.
%

\documentstyle[12pt,amssymbols]{article}
\input math_macros.tex
\def\baselinestretch{1.2}
\def\thefootnote{\fnsymbol{footnote}}
\begin{document}
\begin{titlepage}
\begin{center}
June 3, 1994     \hfill    LBL-35730 \\

\vskip .5in

{\large \bf Pascal Program for Generating Tables of $SU(3)$
           Clebsch-Gordan Coefficients}
\footnote{This work was supported by the Director, Office of Energy
Research, Office of High Energy and Nuclear Physics, Division of High
Energy Physics of the U.S. Department of Energy under Contract
DE-AC03-76SF00098.}
\vskip .50in

Thomas A.~Kaeding

{\em Theoretical Physics Group\\
     Lawrence Berkeley Laboratory\\
     University of California\\
     Berkeley, California 94720}
\end{center}

\vskip .5in

\begin{abstract}

Pascal routines are provided that generate representations of
the group $SU(3)$ and tabulate the Clebsch-Gordan coefficients in the
products of representations.

\end{abstract}
\end{titlepage}

\renewcommand{\thepage}{\roman{page}}
\setcounter{page}{2}
\mbox{ }

\vskip 1in

\begin{center}
{\bf Disclaimer}
\end{center}

\vskip .2in

\begin{scriptsize}
\begin{quotation}
This document was prepared as an account of work sponsored by the United
States Government. While this document is believed to contain correct
information, neither the United States Government nor any agency
thereof, nor The Regents of the University of California, nor any of their
employees, makes any warranty, express or implied, or assumes any legal
liability or responsibility for the accuracy, completeness, or usefulness
of any information, apparatus, product, or process disclosed, or represents
that its use would not infringe privately owned rights.  Reference herein
to any specific commercial products process, or service by its trade name,
trademark, manufacturer, or otherwise, does not necessarily constitute or
imply its endorsement, recommendation, or favoring by the United States
Government or any agency thereof, or The Regents of the University of
California.  The views and opinions of authors expressed herein do not
necessarily state or reflect those of the United States Government or any
agency thereof of The Regents of the University of California and shall
not be used for advertising or product endorsement purposes.
\end{quotation}
\end{scriptsize}

\vskip 2in

\begin{center}
\begin{small}
{\it Lawrence Berkeley Laboratory is an equal opportunity employer.}
\end{small}
\end{center}

\newpage
\renewcommand{\thepage}{\arabic{page}}
\setcounter{page}{2}

\begin{center}
{\bf PROGRAM SUMMARY}\\
\end{center}
\setlength{\parindent}{0in}

\vskip .2in
{\it Title of Program:}  SU3Clebsch

\vskip .2in
{\it Catalogue number:}

\vskip .2in
{\it Program obtainable from:}  CPC Program Library, Queen's University of
Belfast, N. Ireland (see application form in this issue)

\vskip .2in
{\it Licensing provisions:}  Persons requesting the program must sign the
standard CPC non-profit use licence (see licence agreement printed in
every issue).

\vskip .2in
{\it Computer for which the program is designed and others on which it has
been tested:}  VAX workstation 4090, VAX 6610

\vskip .2in
{\it Operating systems under which the program has been tested:}  VMS v. T6.1

\vskip .2in
{\it Programming language used:}  Pascal (DEC Pascal v. 4.4)

\vskip .2in
{\it Memory required to execute:}  Variable;  4 M words for $\bar{\bf 3}$
$\otimes$ {\bf 3}, 10.8 M words for $\bar{\bf 10}$ $\otimes$ {\bf 8}.

\vskip .2in
{\it No. of bits in a word:}  32

\vskip .2in
{\it No. of processors used:}  1

\vskip .2in
{\it Has the code been vectorized?}  No

\vskip .2in
{\it No. of lines in distributed program:}  8250

\vskip .2in
{\it Keywords:}  SU(3), Clebsch-Gordan coefficients

\vskip .2in
{\it Classification:}  4.2 Computational methods of algebras and groups,
11.6 Phenomenological and empirical models and theories in elementary
particle physics.

\vskip .2in
{\it Nature of physical problem:}

Calculations in models based on the group $SU(3)$ often require Clebsch-Gordan
coefficients in the product of group representations.
Previously compiled tables \cite{oldtables} contained only representations
having integral hypercharge values.  They are therefore useful for
calculations involving mesons and hadrons, but are inadequate for calculations
that involve arbitrary numbers of quarks.

\vskip .2in
{\it Method of solution:}

The program generates representations of $SU(3)$ whose states are
represented by vectors. The dimension of such a vector is the number of
$SU(3)$ tensor indices used to describe the representation.
The vectors in the product of two representations are formed by
taking outer products.
The set of such vectors is decomposed into the irreducible representations
of the Clebsch-Gordan series.
The Clebsch-Gordan coefficients are then found as inner products between
the initial set of vectors and the states in this decomposition.

\vskip .2in
{\it Restrictions on the complexity of the problem:}

The program is written to handle representations that have at most nine
$SU(3)$ indices.
For most physical calculations this should suffice.

\vskip .2in
{\it Typical running time:}

Running time depends on which table is compiled.
Times quoted are for the VAX 4090.
For $\bar{\bf 3}$ $\otimes$ {\bf 3}, the CPU time is 4.3 sec.
For $\bar{\bf 10}$ $\otimes$ {\bf 8}, the CPU time is 52 min 26 sec.

\vskip .2in
{\it Unusual features of the program:}

The program does not compile a general table of coefficients.
However, the calculation of many tables of coefficients has been
written into the program.  If the user needs any other tables, he
is encouraged to follow the examples in the
code in order to write other routines.

\newpage
\begin{center}
{\bf LONG WRITE-UP}
\end{center}
\setlength{\parindent}{.5in}

\vskip .2in

\section{Introduction}

There exist in the literature tables
of Clebsch-Gordan tables involving
representations of SU(3) with integral hypercharge
values \cite{oldtables}.  These are inadequate for handling physical
problems that use representations that cannot be built from
combinations involving three quarks or quark plus antiquark.
Such problems include calculations involving exotic hadrons, sextet quarks,
or flavor $SU(3)$ transitions such as $c \rightarrow s$.
Hence the need
to develop the program SU3Clebsch that calculates tables involving
representations with nonintegral hypercharge.

The conventions of
\cite{slansky} are used to label the representations.
Users desiring a review of the theoretical background
can consult \cite{deswart}.

\section{Calculational Method}

We can always write an $SU(3)$ tensor with only upper indices which run
over $u$=1, $d$=2, $s$=3.
In the program tensors are represented by arrays of integers.
Real values are not necessary as a result of the structure of the group;
i.e., the quantum numbers of states are not continuous and therefore
the coefficient of each term in a vector is a rational number.
The number of integers is $3^n$ for an array that represents a tensor
with $n$ indices.
A state in a representation of $SU(3)$ is a tensor with a particular
hypercharge, isospin and third component of isospin.
The array representing such a state is called a ``vector'' in the
program code.
States of a representation must be properly normalized in order to maintain
the unitarity of the table of Clebsch-Gordan tables.  That is, the inner
product of a vector with itself must be 1.
Therefore the sum of the squares of the integers in a vector
is stored in the 0, 1, ..., 1 component of the vector and serves as the
denominator (squared).  The integers themselves serve as the numerators.
The vectors can now be thought of as arrays of rational numbers.
For example, consider the highest-weight state of the {\bf 8}.
In the pion octet this state is the $K^+$, and in the lowest baryon octet
it is the proton.
  \begin{equation}
  \begin{array}{rl}
    {\bf 8}\left(y=1, i=\frac{1}{2}, i_3=\frac{1}{2}\right) & = A^{ijk},\\
    A^{uud} & = \frac{1}{\sqrt{2}},\\
    A^{uud} & = -\frac{1}{\sqrt{2}}.
  \end{array}
  \end{equation}
The vector that represents it has nonzero components only in the spaces
marked by $u$, $u$, $d$ and $u$, $d$, $u$.  The norm squared is 2 and
is stored in the space marked 0, $u$, $u$.
We can write it simply as
  \begin{equation}
    {\bf 8}\left(y=1, i=\frac{1}{2}, i_3=\frac{1}{2}\right)
           = \frac{1}{\sqrt{2}}(uud - udu).
  \label{highest8}
  \end{equation}
Although our storage method is not efficient, it has facilitated the
coding of the program.

The raising and lowering operations of the group $SU(3)$ are performed by
subroutines that raise or lower the indices of a vector.
Raising or lowering can occur in any of the three directions corresponding
to the three $SU(2)$ subgroups of SU(3).
For example, if we wish to lower the isospin of
the highest-weight state of the {\bf 8} shown above,
the first nonzero component can have either its first or second index lowered,
while the other nonzero component can have either the first or third index
lowered.
Two of these possibilities cancel to leave
  \begin{equation}
    {\bf 8}\left(y=1, i=\frac{1}{2}, i_3=\hbox{-}\frac{1}{2}\right)
      = \frac{1}{\sqrt{2}}(dud - ddu).
  \end{equation}
The raising and lowering operations are used
to construct all of the vectors in a given representation from
the highest-weight state.

The product of two representations is calculated as all possible outer
products of vectors in the representations.
The outer product of
an $n$-vector and an $m$-vector is an $(n+m)$-vector whose nonzero components
are the products of the appropriate nonzero components of the factor vectors.
For example, the outer product of
the highest-weight vector of the {\bf 8} in equation
(\ref{highest8}) and the highest-weight vector of the $\bar{\bf 3}$,
  \begin{equation}
    \bar{\bf 3}\left(y=\frac{2}{3}, i=0, i_3=0\right)
        = \frac{1}{\sqrt{2}}(ud - du),
  \label{highest3bar}
  \end{equation}
is
  \begin{equation}
  \begin{array}{c}
    {\bf 8}\left(y=1, i=\frac{1}{2}, i_3=\frac{1}{2}\right) \otimes
    \bar{\bf 3}\left(y=\frac{2}{3}, i=0, i_3=0\right) \\
     =  \frac{1}{2} (uudud - uuddu - uduud + ududu).
  \end{array}
  \label{high8x3bar}
  \end{equation}

The representations in the Clebsch-Gordan series are constructed from the
largest to the smallest.
By larger we mean having a highest-weight vector with quantum numbers larger
than the highest-weight vector of a smaller representation.
The smaller ones are constructed such that their
highest-weight vectors (and hence all of their vectors) are orthogonal
to the vectors of the larger representations of the same weight.
For example, consider the product (\ref{high8x3bar}) above.
This is the highest-weight vector of the $\bar{\bf 15}$ representation.
We apply a lowering operation to find the state of
the $\bar{\bf 15}$ that has the set of quantum numbers (``weights'')
$y=\frac{2}{3}$, $i=1$, $i_3=1$, i.e.,
  \begin{equation}
  \begin{array}{c}
    \bar{\bf 15}\left(y=\frac{2}{3}, i=1, i_3=1\right) \\
      =  \frac{1}{\sqrt{8}} (uudus + uusud - uudsu - uusdu - uduus - usuud
                            + udusu + usudu).
  \end{array}
  \end{equation}
The highest-weight vector of the {\bf 6} in the product is found to be
a vector spanned by the outer products of the vectors in {\bf 8} and
$\bar{\bf 3}$ of the same weight and which is orthogonal
to this vector of the $\bar{\bf 15}$.  The complete $\bar{\bf 15}$ and {\bf 6}
representations are constructed, and the $\bar{\bf 3}$ in the product is
constructed to be orthogonal to both.

To find the Clebsch-Gordan coefficients, we consider two sets of vectors.
The first set consists of all possible outer products of the vectors in
the representations that we are multiplying.
The second set consists of all of the vectors in the representations that
have been constructed in the product.
The coefficients are the inner products between these sets of vectors.
In the example that we have been following, the coefficient
  \begin{equation}
  \begin{array}{c}
    < \bar{\bf 15} \left(y=\frac{2}{3}, i=1, i_3=1\right) |
     {\bf 8} \left(y=1, i=\frac{1}{2}, i_3=\frac{1}{2}\right)
     \bar{\bf 3} \left(y=\hbox{-}\frac{1}{3}, i=\frac{1}{2},
          i_3=\frac{1}{2}\right) > \\
  =    \frac{1}{\sqrt{8}} (uudus + uusud - uudsu - uusdu - uduus - usuud
                            + udusu + usudu) \\
    {\bf \cdot} \quad \left(\frac{1}{\sqrt{2}}(uud - udu)
     \otimes \frac{1}{\sqrt{2}}(us - su)\right) \\
  = \frac{1}{\sqrt{2}}.
  \end{array}
  \end{equation}
This is the second line in the table of sample output shown below.

\section{Program Structure}

The program is broken up into routines that handle vectors and representations
with specific numbers of $SU(3)$ indices.
This means that we have replication of procedures for each set of indices,
but that the program is easier to use and to code.
The main routine calls the subroutines that generate
the tables desired.  They in turn call the routines that manipulate the
vectors and representations necessary to compile the tables.

The routines that build the pieces necessary to construct the tables of
coefficients are named {\tt do}{\bf R}{\tt x}{\bf S}, where {\bf R} and
{\bf S} are the names of the representations to be multiplied.
The user must remove the comment braces around the procedure calls in the
main routine (at the bottom of the program listing) for the tables that
he wishes to calculate.
The routines that are included in this version of the program are

\vskip .2in
\begin{tabular}{lrlllrll}
  {\tt do3barx3}       &  $\bar{\bf 3}$    &  $\otimes$    &  {\bf 3}
                    $\quad \quad \quad \quad$ &
  {\tt do3barx3bar}    &  $\bar{\bf 3}$    &  $\otimes$    &  $\bar{\bf 3}$ \\
  {\tt do6x3}          &  {\bf 6}          &  $\otimes$    &  {\bf 3} &
  {\tt do6x3bar}       &  {\bf 6}          &  $\otimes$    &  $\bar{\bf 3}$ \\
  {\tt do6x6}          &  {\bf 6}          &  $\otimes$    &  {\bf 6} &
  {\tt do6barx3}       &  $\bar{\bf 6}$    &  $\otimes$    &  {\bf 3} \\
  {\tt do6barx3bar}    &  $\bar{\bf 6}$    &  $\otimes$    &  $\bar{\bf 3}$ &
  {\tt do6barx6}       &  $\bar{\bf 6}$    &  $\otimes$    &  {\bf 6} \\
  {\tt do6barx6bar}    &  $\bar{\bf 6}$    &  $\otimes$    &  $\bar{\bf 6}$ &
  {\tt do8x3}          &  {\bf 8}          &  $\otimes$    &  {\bf 3} \\
  {\tt do8x3bar}       &  {\bf 8}          &  $\otimes$    &  $\bar{\bf 3}$ &
  {\tt do8x6}          &  {\bf 8}          &  $\otimes$    &  {\bf 6} \\
  {\tt do8x6bar}       &  {\bf 8}          &  $\otimes$    &  $\bar{\bf 6}$ &
  {\tt do8x8}          &  {\bf 8}          &  $\otimes$    &  {\bf 8} \\
  {\tt do10x3bar}      &  {\bf 10}         &  $\otimes$    &  $\bar{\bf 3}$ &
  {\tt do10x8}         &  {\bf 10}         &  $\otimes$    &  {\bf 8} \\
  {\tt do10barx8}      &  $\bar{\bf 10}$   &  $\otimes$    &  {\bf 8} &
  {\tt do15x3bar}      &  {\bf 15}         &  $\otimes$    &  $\bar{\bf 3}$ \\
  {\tt do27x3bar}      &  {\bf 27}         &  $\otimes$    &  $\bar{\bf 3}$ \\
\end{tabular}
\vskip .2in

The functions that the above routines use are

\vskip .2in
\begin{tabular}{ll}
{\tt index}       &  Returns $u$, $d$, $s$ as the $SU(3)$ index for 1, 2, 3 \\
{\tt nullvector}{\it n} & Returns true if its {\it n}-vector argument is null\\
{\tt inner}{\it n} & Finds the inner product of two {\it n}-vectors \\
{\tt divisible}{\it n} & Returns true if its {\it n}-vector argument is
                         divisible \\
                       &  by its integer argument \\
{\tt orthogonal}{\it n} & Returns true if its two {\it n}-vector arguments
                            are \\
                        & orthogonal \\
\end{tabular}

\begin{tabular}{ll}
{\tt normalvertical} & Returns true if all columns in the table of \\
                     & coefficients have unit norm \\
{\tt normalhorizontal} & Returns true if all rows in the table of \\
                       & coefficients have unit norm \\
\end{tabular}
\vskip .2in

The procedures used are
\vskip .2in
\begin{tabular}{ll}
{\tt initialize}{\it n} & Initializes an {\it n}-vector \\
{\tt initrep}{\it n} & Initializes a rep composed of {\it n}-vectors \\
{\tt inittable} & Initializes the table of coefficients \\
{\tt reducefraction} & Reduces a fraction to its lowest form \\
{\tt scalardivide}{\it n} & Divides an {\it n}-vector by an integer \\
{\tt normalize}{\it n} & Finds the square of the norm of an {\it n}-vector
                        and stores \\
                            & it in the vector's 0th component \\
{\tt scalarmultiply}{\it n} & Multiplies an {\it n}-vector by an integer \\
{\tt addvectors}{\it n} & Adds two {\it n}-vectors \\
{\tt T\_}{\it n} & Performs the $SU(3)$ raising and lowering operations \\
               &  on {\it n}-vectors \\
{\tt highestw}{\it n} & Determines whether its {\it n}-vector argument is
                       a \\
                  & highest-weight vector \\
{\tt findperp}{\it n} & Finds the projection of one {\it n}-vector onto
                       the subspace \\
              & orthogonal to another {\it n}-vector \\
{\tt calc}{\bf R}{\tt \_}{\it n} & Calculates the representation {\bf R}
                                  from its highest-weight \\
                        & vector in terms of {\it n}-vectors;
                                  only the {\bf R} and {\it n} \\
                        & combinations needed by the procedures
                                  {\tt do}{\bf R}{\tt x}{\bf S} are \\
                        &  included \\
{\tt writerep}{\it n} & Writes the {\it n}-vectors of a representation
                          into {\tt repfile} \\
{\tt outer}{\it n}{\tt x}{\it m} & Finds the outer product of an {\it n}-vector
             and an {\it m}-vector \\
{\tt tabulate}{\it n}{\tt x}{\it m} & Tabulates the coefficients into
          {\tt table} and into the output \\
                     & files for the product of a
               representation of {\it n}-vectors and of \\
           & {\it m}-vectors
                to a representation of ({\it n+m})-vectors \\
\end{tabular}

\begin{tabular}{ll}
{\tt display}{\bf R} & Writes the weight diagram for the representation {\bf R}
           into \\
        &  {\tt repfile} \\
{\tt checktable} & Calls {\tt horizontalnormal} and {\tt verticalnormal}
       and \\
    & checks that {\tt table} has the correct number of columns filled \\
\end{tabular}

\vskip .2in

The global variables used by the program are

\vskip .2in
\begin{tabular}{ll}
{\tt outfile} & File into which the table of coefficients is written \\
{\tt outlog}  & Log file for error messages and a duplicate set of
              coefficients \\
{\tt repfile} & File into which the vectors comprising a representation
                 are \\
              & written \\
{\tt name}    & String which is the name of {\tt repfile} \\
{\tt isit}    & A boolean variable used in {\tt highestw}{\it n} \\
{\tt table}   & The table of Clebsch-Gordan coefficients \\
{\tt tablemarker} & Number of columns of {\tt table} that have been filled \\
{\tt size1}, {\tt size2} & The sizes of the factor representations \\
\end{tabular}
\vskip .2in

\newpage

\section{Using the Program}

In order to use this program, the user must remove the comment braces around
the call to {\tt do}{\bf R}{\tt x}{\bf S} in the the main procedure for the
table that he wishes to calculate.  Then the code can be compiled and run.
We recommend calculating one table at a time, due to the variable, and
sometimes very long, running time.

Since we store representations as arrays of vectors, the vectors are labelled
not by their quantum numbers, but merely by integers.
Here we explain the ordering of the vectors.
The highest-weight state is always numbered 1.
This is the state of highest isospin in the isomultiplet of highest
hypercharge.
States are then sequentially numbered from right to left and then from top to
bottom of the weight diagram of the representation.  For representations that
have doubly (or more) occupied sites in the weight diagram, the states with
largest total isospin are numbered first.  Only after one state in every site
has been numbered are the other states numbered, again from right to left
and from top to bottom.  The procedures {\tt display}{\bf R} write the
weight diagrams with their numbering schemes into the files {\tt repfile}.
The figure shows the fifteen representation and the numbering
of its states.
It contains the isoquartet 4, 5, 6, 7, the isotriplet 8, 9, 10, the
isodoublet 13, 14, and the isosinglet 15.

A square root is assumed to appear over each coefficient in the tables
generated.  Any minus signs are outside the square root.

If the user finds it necessary to write additional procedures to compile
additional tables, then he should be aware of some error messages that
may be written to {\tt outlog}.  The routines {\tt findperp}{\it n} write
error messages if their results are not highest-isospin vectors or if their
results are null vectors.
In many cases, one does not want the
highest-isospin vector, and so this error message is often ignored.
When {\tt calc}{\bf R}{\tt \_}{\it n} can ignore that message, it will place
a note to that effect in {\tt outlog}.
If {\tt findperp}{\it n} returns a message that the result is a
null vector, it is an indication that the desired result
was not found (because the two input vectors were parallel).  A new choice
of input vectors is then required.
If a routine returns an error message saying that a vector
is not a highest-weight vector when one was expected, then this is an
indication that the construction of that vector was flawed.
This can only be corrected on a case-by-case basis.

\section{Sample Output}

Below is a sample table generated by the program.
The first column is the number of the state in the first representation in
the product.  The second column is the number of the state in the
second representation.
The third column is the number of the state in the product
representation that is denoted in the heading of that part of the table.
The last two columns are the numerator and
denominator of the Clebsch-Gordan coefficient between those three states.
Recall that a square root is assumed to appear over each fraction.
Only nonzero coefficients are tabulated.

\section{Acknowledgement}

This work was supported by the Director, Office of Energy
Research, Office of High Energy and Nuclear Physics, Division of High
Energy Physics of the U.S. Department of Energy under Contract
DE-AC03-76SF00098.

\begin{figcap}

\item Labelling of the states of the {\bf 15}.

\end{figcap}

\begin{thebibliography}{99}
\bibitem{oldtables}  P.~McNamee and F.~Chilton, Rev. Mod. Phys. 36 (1964) 1005.
\bibitem{slansky}    R.~Slansky, Phys. Rep. 79 (1981) 1.
\bibitem{deswart}    J.~J.~de Swart, Rev. Mod. Phys. 35 (1963) 916.
\end{thebibliography}

\end{document}

-------------------------- cut here, sample output follows ------------------

                    Clebsch Table for 8 x 3*


                    8 x 3* -> 15'*

    1    x     1    ->     1    =        1 /          1
    1    x     2    ->     3    =        1 /          2
    1    x     3    ->     4    =        1 /          4
    1    x     3    ->    13    =       -1 /          8
    2    x     1    ->     2    =        1 /          1
    2    x     2    ->     4    =        1 /          4
    2    x     2    ->    13    =        1 /          8
    2    x     3    ->     5    =        1 /          2
    3    x     1    ->     3    =        1 /          2
    3    x     2    ->     6    =        1 /          1
    3    x     3    ->     7    =        1 /          3
    3    x     3    ->    14    =       -1 /         24
    4    x     1    ->     4    =        1 /          2
    4    x     2    ->     7    =        2 /          3
    4    x     2    ->    14    =        1 /         48
    4    x     3    ->     8    =        2 /          3
    4    x     3    ->    15    =       -1 /         48
    5    x     1    ->     5    =        1 /          2
    5    x     2    ->     8    =        1 /          3
    5    x     2    ->    15    =        1 /         24
    5    x     3    ->     9    =        1 /          1
    6    x     1    ->    14    =        3 /          8
    6    x     2    ->    10    =        1 /          1
    6    x     3    ->    11    =        1 /          2
    7    x     1    ->    15    =        3 /          8
    7    x     2    ->    11    =        1 /          2
    7    x     3    ->    12    =        1 /          1
    8    x     1    ->    13    =        3 /          4
    8    x     2    ->    14    =        9 /         16
    8    x     3    ->    15    =        9 /         16

                    8 x 3* -> 6

    1    x     2    ->     1    =        1 /          2
    1    x     3    ->     2    =        1 /          4
    2    x     2    ->     2    =        1 /          4
    2    x     3    ->     3    =        1 /          2
    3    x     1    ->     1    =       -1 /          2
    3    x     3    ->     4    =        1 /          4
    4    x     1    ->     2    =       -1 /          2
    4    x     2    ->     4    =       -1 /          8
    4    x     3    ->     5    =        1 /          8
    5    x     1    ->     3    =       -1 /          2
    5    x     2    ->     5    =       -1 /          4
    6    x     1    ->     4    =       -1 /          4
    6    x     3    ->     6    =        1 /          2
    7    x     1    ->     5    =       -1 /          4
    7    x     2    ->     6    =       -1 /          2
    8    x     2    ->     4    =        3 /          8
    8    x     3    ->     5    =        3 /          8

                    8 x 3* -> 3*

    1    x     3    ->     1    =        3 /          8
    2    x     2    ->     1    =       -3 /          8
    3    x     3    ->     2    =        3 /          8
    4    x     2    ->     2    =       -3 /         16
    4    x     3    ->     3    =        3 /         16
    5    x     2    ->     3    =       -3 /          8
    6    x     1    ->     2    =        3 /          8
    7    x     1    ->     3    =        3 /          8
    8    x     1    ->     1    =        1 /          4
    8    x     2    ->     2    =       -1 /         16
    8    x     3    ->     3    =       -1 /         16

---------------------- cut here, facsimile of figure follows ---------------



                 y = 4/3               x 3          x 2          x 1


                 y = 1/3         x 7       14 xx 6      13 xx 5        x 4


                 y = -2/3              x 10      15 xx 9         x 8


                 y = -5/3                     x 12         x 11


                 i_3 =          -3/2   -1    -1/2    0    1/2    1     3/2





