Ptrdist
------------------------------------------------------------------------------
The programs in the Ptrdist benchmark suite have the following copyrights and
licenses:

	Anagram:
	The anagram program is licensed under the LLVM license.  It has the
	following additional copyrights and restrictions:

	This program is Copyright 1991 by Raymond Chen.
				(rjc@math.princeton.edu)

	This program may be freely distributed provided all alterations
	to the original are clearly indicated as such.

	Anagram has only been modified so that it compiles on our machines.

	BC:
	The bc program is licensed to you under the GNU General Public License,
	Version 2.

	FT:
	The FT program is covered by the LLVM license and has the following
	additional copyrights and restrictions:

	Copyright (c) 1993 by Alain K\"{a}gi and the University of Wisconsin
	Board of Trustees.

	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 PARTICULAR, NEITHER THE AUTHOR NOR THE UNIVERSITY OF
	WISCONSIN MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING
	THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
	PURPOSE.

	Copyright (c) 1983 Regents of the University of California.
	All rights reserved.

	Redistribution and use in source and binary forms are permitted
	provided that the above copyright notice and this paragraph are
	duplicated in all such forms and that any documentation,
	advertising materials, and other materials related to such
	distribution and use acknowledge that the software was developed
	by the University of California, Berkeley.  The name of the
	University may not be used to endorse or promote products derived
	from this software without specific prior written permission.
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
	IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
	WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

	ks:
	The ks program is licensed to you under the GNU General Public License,
	Version 2.

	yacr2:
	The yacr2 program is licensed to you under the GNU General Public License,
	Version 2.

