*-----------------------------------------------------------------------
* Copyright 1991-2003: John D. McCalpin
*-----------------------------------------------------------------------
* License:                                                              */
*  1. You are free to use this program and/or to redistribute           */
*     this program.                                                     */
*  2. You are free to modify this program for your own use,             */
*     including commercial use, subject to the publication              */
*     restrictions in item 3.                                           */
*  3. You are free to publish results obtained from running this        */
*     program, or from works that you derive from this program,         */
*     with the following limitations:                                   */
*     3a. In order to be referred to as "STREAM benchmark results",     */
*         published results must be in conformance to the STREAM        */
*         Run Rules, (briefly reviewed below) published at              */
*         http://www.cs.virginia.edu/stream/ref.html                    */
*         and incorporated herein by reference.                         */
*         As the copyright holder, John McCalpin retains the            */
*         right to determine conformity with the Run Rules.             */
*     3b. Results based on modified source code or on runs not in       */
*         accordance with the STREAM Run Rules must be clearly          */
*         labelled whenever they are published.  Examples of            */
*         proper labelling include:                                     */
*         "tuned STREAM benchmark results"                              */
*         "based on a variant of the STREAM benchmark code"             */
*         Other comparable, clear and reasonable labelling is           */
*         acceptable.                                                   */
*     3c. Submission of results to the STREAM benchmark web site        */
*         is encouraged, but not required.                              */
*  4. Use of this program or creation of derived works based on this    */
*     program constitutes acceptance of these licensing restrictions.   */
*  5. Absolutely no warranty is expressed or implied.                   */
