 ***************************************************************************
  * All the software  contained in this package  is protected by copyright. *
  * Permission  to use, copy, modify, and  distribute this software for any *
  * purpose without fee is hereby granted, provided that this entire notice *
  * is included  in all copies  of any software which is or includes a copy *
  * or modification  of this software  and in all copies  of the supporting *
  * documentation for such software.                                        *
  ***************************************************************************
  * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED *
  * WARRANTY. IN NO EVENT, NEITHER  THE AUTHORS, NOR THE PUBLISHER, NOR ANY *
  * MEMBER  OF THE EDITORIAL BOARD OF  THE JOURNAL  "NUMERICAL ALGORITHMS", *
  * NOR ITS EDITOR-IN-CHIEF, BE  LIABLE FOR ANY ERROR  IN THE SOFTWARE, ANY *
  * MISUSE  OF IT  OR ANY DAMAGE ARISING OUT OF ITS USE. THE ENTIRE RISK OF *
  * USING THE SOFTWARE LIES WITH THE PARTY DOING SO.                        *
  ***************************************************************************
  * ANY USE  OF THE SOFTWARE  CONSTITUTES  ACCEPTANCE  OF THE TERMS  OF THE *
  * ABOVE STATEMENT.                                                        *
  ***************************************************************************

   AUTHORS:

       Christian Reinsch
       formerly Technical University of Munich, Munich, Germany

       Mathias Richter
       University of the Bundeswehr, Munich, Germany
       Email: mathias.richter@unibw.de


   REFERENCE:

       Singular Value Decomposition in Extended Precision Arithmetic
       NUMERICAL ALGORITHMS
       DOI: [to be inserted, if accepted for publication]

   SOFTWARE REVISION DATE:

       V1.0, October 2022

   SOFTWARE LANGUAGE:

       ANSI C with gcc support for extended double precision arithmetic


=====================================================================
SOFTWARE
=====================================================================

The eprecSVD package provides an implementation of the Golub-Reinsch
algorithm to compute the SVD of a real matrix in extended double
precision arithmethic as defined by the IEEE standard.

The software is written in the ANSI C language.
It was compiled with the GNU gcc compiler, version 10.2.0, and run 
under Windows 10 on an Intel x86-64 architecture. 
No other environments were tested.

The package eprecSVD can be downloaded from:
   https://www.unibw.de/eit_mathematik/forschung/eprecsvd


=====================================================================
HOW TO INSTALL AND RUN THE PROGRAMS
=====================================================================

Please follow these steps:

- Extract the archive in a directory of your choice. This creates a
  directory called eprecSVD with all files of the package.

- Make sure you have the gcc compiler installed and in your path.

- Open a command window, change to the eprecSVD directory
  and type "make SVD" to compile the C code. To remove compiled
  object files, type "make clean".

- The SVD program can be run for the test cases investigated in
  the article "Singular Value Decomposition in Extended Double Precision"
  by typing "SVDtest2" in the command window.


=====================================================================
PACKAGE
=====================================================================

The eprecSVD package is organized into a single directory which contains:

README.txt       - This file
SVD.c            - C code implementing the Golub-Reinsch algorithm for 
                   computing the SVD of a real matrix.
                   The code can be compiled to execute in double precision
                   as well as in extended double precision arithmetic; this
                   can be set in the header file SVD.h
                   The code contains printf statements which can be deleted
                   for better performance.
SVD.h            - The header file for SVD.c. One may switch between double
                   precision and extended double precision computation. One
                   may also switch between the Rayleigh and the Wilkinson shift
                   strategy for QR iteration with origin shifts.
SVDtestFunc.c    - C code to the test the fundamental identities of the SVD
                   in extended double precision arithmetic  
SVDtest2.c       - C code implementing all the test cases discussed in 
                   "Singular Value Decomposition in Extended Double Precision".
                   Contains the C main function.
Makefile         - Utility file for compiling the above C code with the gcc 
                   compiler
