You are on page 1of 44

This file contains 3rd Party Licenses used in Freelance 2016 SP1.

Contents
Copyright and Licensing Information for ACE(TM) and TAO(TM) ........................................................... 2
AVR-libc common_h license .................................................................................................................... 4
AVR-libc iox128d3_h license ................................................................................................................... 5
AVR-libc pgmspace_h license .................................................................................................................. 6
Boost Software License ........................................................................................................................... 7
Code Project Open License (CPOL) 1.02 .................................................................................................. 8
Preamble ............................................................................................................................................. 8
License ................................................................................................................................................. 8
CPOL uses .......................................................................................................................................... 11
Editline cmd_mon license ..................................................................................................................... 12
Embedded System Paranoia.................................................................................................................. 13
Fdmlib 1993 license ............................................................................................................................... 24
Fdmlib 2004 license ............................................................................................................................... 24
Infozip 2005-Feb-10 .............................................................................................................................. 25
Minizip 0.22 ........................................................................................................................................... 27
Microsoft Limited Public License (Ms-LPL) ............................................................................................ 28
Mike Scott Rijndael implementation license......................................................................................... 29
SoftFloat 2b ........................................................................................................................................... 30
Tinypy License ....................................................................................................................................... 32
Vprintf - copyright ................................................................................................................................. 33
WinIo 1.2 ............................................................................................................................................... 34
WndTabs................................................................................................................................................ 39
Zlib 1.1.3 ................................................................................................................................................ 40
Zlib 1.1.4 ................................................................................................................................................ 44

2PAA116753- 1
Copyright and Licensing Information for ACE(TM) and TAO(TM)

Copyright and Licensing Information for ACE(TM) and TAO(TM)

[1]ACE(TM) and [2]TAO(TM) are copyrighted by [3]Douglas C. Schmidt and


his [4]research group at [5]Washington University, Copyright (c)
1993-1999, all rights reserved. Since ACE and TAO are [6]open source,
[7]free software, you are free to use, modify, and distribute the ACE
and TAO source code and object code produced from the source, as long
as you include this copyright statement along with code built using
ACE and TAO.

In particular, you can use ACE and TAO in proprietary software and are
under no obligation to redistribute any of your source code that is
built using ACE and TAO. Note, however, that you may not do anything
to the ACE and TAO code, such as copyrighting it yourself or claiming
authorship of the ACE and TAO code, that will prevent ACE and TAO from
being distributed freely using an open source development model.

ACE and TAO are provided as is with no warranties of any kind,


including the warranties of design, merchantibility and fitness for a
particular purpose, noninfringement, or arising from a course of
dealing, usage or trade practice. Moreover, ACE and TAO are provided
with no support and without any obligation on the part of Washington
University, its employees, or students to assist in its use,
correction, modification, or enhancement. However, commercial support
for ACE and TAO are available from [8]Riverace and [9]OCI,
respectively. Moreover, both ACE and TAO are Y2K-compliant, as long as
the underlying OS platform is Y2K-compliant.

Washington University, its employees, and students shall have no


liability with respect to the infringement of copyrights, trade
secrets or any patents by ACE and TAO or any part thereof. Moreover,
in no event will Washington University, its employees, or students be
liable for any lost revenue or profits or other special, indirect and
consequential damages.

The [10]ACE and [11]TAO web sites are maintained by the [12]Center for
Distributed Object Computing of Washington University for the
development of open source software as part of the [13]open source
software community. By submitting comments, suggestions, code, code
snippets, techniques (including that of usage), and algorithms,
submitters acknowledge that they have the right to do so, that any
such submissions are given freely and unreservedly, and that they
waive any claims to copyright or ownership. In addition, submitters
acknowledge that any such submission might become part of the
copyright maintained on the overall body of code, which comprises the
[14]ACE and [15]TAO software. By making a submission, submitter agree

2PAA116753- 2
Copyright and Licensing Information for ACE(TM) and TAO(TM)

to these terms. Furthermore, submitters acknowledge that the


incorporation or modification of such submissions is entirely at the
discretion of the moderators of the open source ACE and TAO projects
or their designees.

The names ACE


(TM), TAO(TM), and Washington University may not be used to endorse or
promote products or services derived from this source without express
written permission from Washington University. Further, products or
services derived from this source may not be called ACE(TM) or
TAO(TM), nor may the name Washington University appear in their names,
without express written permission from Washington University.

If you have any suggestions, additions, comments, or questions, please


let [16]me know.

[17]Douglas C. Schmidt
_________________________________________________________________

Back to the [18]ACE home page.

References

1. http://www.cs.wustl.edu/~schmidt/ACE.html
2. http://www.cs.wustl.edu/~schmidt/TAO.html
3. http://www.cs.wustl.edu/~schmidt/
4. http://www.cs.wustl.edu/~schmidt/ACE-members.html
5. http://www.wustl.edu/
6. http://www.opensource.org/
7. http://www.gnu.org/
8. http://www.riverace.com/
9. file://localhost/home/cs/faculty/schmidt/.www-docs/www.ociweb.com
10. http://www.cs.wustl.edu/~schmidt/ACE.html
11. http://www.cs.wustl.edu/~schmidt/TAO.html
12. http://www.cs.wustl.edu/~schmidt/doc-center.html
13. http://www.opensource.org/
14. http://www.cs.wustl.edu/~schmidt/ACE-obtain.html
15. http://www.cs.wustl.edu/~schmidt/TAO-obtain.html
16. mailto:schmidt@cs.wustl.edu
17. http://www.cs.wustl.edu/~schmidt/
18. file://localhost/home/cs/faculty/schmidt/.www-docs/ACE.html

2PAA116753- 3
AVR-libc common_h license

AVR-libc common_h license

Copyright (c) 2007 Eric B. Weddington


All rights reserved.

Redistribution and use in source and binary forms, with or without


modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright


notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright


notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

* Neither the name of the copyright holders nor the names of


contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

2PAA116753- 4
AVR-libc iox128d3_h license

AVR-libc iox128d3_h license

Copyright (c) 2009-2010 Atmel Corporation


All rights reserved.

Redistribution and use in source and binary forms, with or without


modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright


notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright


notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

* Neither the name of the copyright holders nor the names of


contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

2PAA116753- 5
AVR-libc pgmspace_h license

AVR-libc pgmspace_h license

Copyright (c) 2002-2007 Marek Michalkiewicz


Copyright (c) 2006, Carlos Lamas
Copyright (c) 2009-2010, Jan Waclawek
All rights reserved.

Redistribution and use in source and binary forms, with or without


modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright


notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the copyright holders nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

2PAA116753- 6
Boost Software License

Boost Software License

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization


obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

2PAA116753- 7
Code Project Open License (CPOL) 1.02

Code Project Open License (CPOL) 1.02

Preamble

This License governs Your use of the Work. This License is intended to allow developers to
use the Source Code and Executable Files provided as part of the Work in any application in
any form.

The main points subject to the terms of the License are:

• Source Code and Executable Files can be used in commercial applications;


• Source Code and Executable Files can be redistributed; and
• Source Code can be modified to create derivative works.
• No claim of suitability, guarantee, or any warranty whatsoever is provided. The
software is provided "as-is".
• The Article accompanying the Work may not be distributed or republished without the
Author's consent

This License is entered between You, the individual or other entity reading or otherwise
making use of the Work licensed pursuant to this License and the individual or other entity
which offers the Work under the terms of this License ("Author").

License

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
CODE PROJECT OPEN LICENSE ("LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER
THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT


AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR
GRANTS YOU THE RIGHTS CONTAINED HEREIN IN CONSIDERATION OF YOUR
ACCEPTANCE OF SUCH TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO
ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE
ANY USE OF THE WORK.

1. Definitions.
a. "Articles" means, collectively, all articles written by Author which describes
how the Source Code and Executable Files for the Work may be used by a
user.
b. "Author" means the individual or entity that offers the Work under the terms
of this License.
c. "Derivative Work" means a work based upon the Work or upon the Work
and other pre-existing works.
d. "Executable Files" refer to the executables, binary files, configuration and
any required data files included in the Work.
e. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or
other medium from or by which the Work is obtained by You.

2PAA116753- 8
Code Project Open License (CPOL) 1.02

f. "Source Code" refers to the collection of source code and configuration files
used to create the Executable Files.
g. "Standard Version" refers to such a Work if it has not been modified, or has
been modified in accordance with the consent of the Author, such consent
being in the full discretion of the Author.
h. "Work" refers to the collection of files distributed by the Publisher, including
the Source Code, Executable Files, binaries, data files, documentation,
whitepapers and the Articles.
i. "You" is you, an individual or entity wishing to use the Work and exercise
your rights under this License.
2. Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or
restrict any rights arising from fair use, fair dealing, first sale or other limitations on
the exclusive rights of the copyright owner under copyright law or other applicable
laws.
3. License Grant. Subject to the terms and conditions of this License, the Author hereby
grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the
applicable copyright) license to exercise the rights in the Work as stated below:
a. You may use the standard version of the Source Code or Executable Files in
Your own applications.
b. You may apply bug fixes, portability fixes and other modifications obtained
from the Public Domain or from the Author. A Work modified in such a way
shall still be considered the standard version and will be subject to this
License.
c. You may otherwise modify Your copy of this Work (excluding the Articles) in
any way to create a Derivative Work, provided that You insert a prominent
notice in each changed file stating how, when and where You changed that file.
d. You may distribute the standard version of the Executable Files and Source
Code or Derivative Work in aggregate with other (possibly commercial)
programs as part of a larger (possibly commercial) software distribution.
e. The Articles discussing the Work published in any form by the author may not
be distributed or republished without the Author's consent. The author retains
copyright to any such Articles. You may use the Executable Files and Source
Code pursuant to this License but you may not repost or republish or otherwise
distribute or make available the Articles, without the prior written consent of
the Author.

Any subroutines or modules supplied by You and linked into the Source Code or
Executable Files of this Work shall not be considered part of this Work and will not be
subject to the terms of this License.

4. Patent License. Subject to the terms and conditions of this License, each Author
hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have made, use,
import, and otherwise transfer the Work.
5. Restrictions. The license granted in Section 3 above is expressly made subject to and
limited by the following restrictions:
a. You agree not to remove any of the original copyright, patent, trademark, and
attribution notices and associated disclaimers that may appear in the Source
Code or Executable Files.
b. You agree not to advertise or in any way imply that this Work is a product of
Your own.

2PAA116753- 9
Code Project Open License (CPOL) 1.02

c. The name of the Author may not be used to endorse or promote products
derived from the Work without the prior written consent of the Author.
d. You agree not to sell, lease, or rent any part of the Work. This does not restrict
you from including the Work or any part of the Work inside a larger software
distribution that itself is being sold. The Work by itself, though, cannot be
sold, leased or rented.
e. You may distribute the Executable Files and Source Code only under the terms
of this License, and You must include a copy of, or the Uniform Resource
Identifier for, this License with every copy of the Executable Files or Source
Code You distribute and ensure that anyone receiving such Executable Files
and Source Code agrees that the terms of this License apply to such Executable
Files and/or Source Code. You may not offer or impose any terms on the Work
that alter or restrict the terms of this License or the recipients' exercise of the
rights granted hereunder. You may not sublicense the Work. You must keep
intact all notices that refer to this License and to the disclaimer of warranties.
You may not distribute the Executable Files or Source Code with any
technological measures that control access or use of the Work in a manner
inconsistent with the terms of this License.
f. You agree not to use the Work for illegal, immoral or improper purposes, or on
pages containing illegal, immoral or improper material. The Work is subject to
applicable export laws. You agree to comply with all such laws and regulations
that may apply to the Work after Your receipt of the Work.
6. Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED "AS
IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE
USER, ASSUME ALL RISK IN ITS USE, INCLUDING COPYRIGHT
INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR
EXPRESSLY DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY
WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION,
WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE
QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY
WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR
ANY PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF
VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU
DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
7. Indemnity. You agree to defend, indemnify and hold harmless the Author and the
Publisher from and against any claims, suits, losses, damages, liabilities, costs, and
expenses (including reasonable legal or attorneys’ fees) resulting from or relating to
any use of the Work by You.
8. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
APPLICABLE LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER
BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR
OTHERWISE, EVEN IF THE AUTHOR OR THE PUBLISHER HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
9. Termination.
a. This License and the rights granted hereunder will terminate automatically
upon any breach by You of any term of this License. Individuals or entities
who have received Derivative Works from You under this License, however,
will not have their licenses terminated provided such individuals or entities

2PAA116753- 10
Code Project Open License (CPOL) 1.02

remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and


11 will survive any termination of this License.
b. If You bring a copyright, trademark, patent or any other infringement claim
against any contributor over infringements You claim are made by the Work,
your License from such contributor to the Work ends automatically.
c. Subject to the above terms and conditions, this License is perpetual (for the
duration of the applicable copyright in the Work). Notwithstanding the above,
the Author reserves the right to release the Work under different license terms
or to stop distributing the Work at any time; provided, however that any such
election will not serve to withdraw this License (or any other license that has
been, or is required to be, granted under the terms of this License), and this
License will continue in full force and effect unless terminated as stated above.
10. Publisher. The parties hereby confirm that the Publisher shall not, under any
circumstances, be responsible for and shall not have any liability in respect of the
subject matter of this License. The Publisher makes no warranty whatsoever in
connection with the Work and shall not be liable to You or any party on any legal
theory for any damages whatsoever, including without limitation any general, special,
incidental or consequential damages arising in connection to this license. The
Publisher reserves the right to cease making the Work available to You at any time
without notice
11. Miscellaneous
a. This License shall be governed by the laws of the location of the head office of
the Author or if the Author is an individual, the laws of location of the
principal place of residence of the Author.
b. If any provision of this License is invalid or unenforceable under applicable
law, it shall not affect the validity or enforceability of the remainder of the
terms of this License, and without further action by the parties to this License,
such provision shall be reformed to the minimum extent necessary to make
such provision valid and enforceable.
c. No term or provision of this License shall be deemed waived and no breach
consented to unless such waiver or consent shall be in writing and signed by
the party to be charged with such waiver or consent.
d. This License constitutes the entire agreement between the parties with respect
to the Work licensed herein. There are no understandings, agreements or
representations with respect to the Work not specified herein. The Author shall
not be bound by any additional provisions that may appear in any
communication from You. This License may not be modified without the
mutual written agreement of the Author and You.

CPOL uses
Shanmuga Sundar.V, http://www.codeproject.com/Articles/16488/A-Windows-Service-Application
nschan, http://www.codeproject.com/Articles/10902/Add-Scrolling-to-a-CWnd-or-CDialog-using-a-C-Helpe
TEiseler, http://www.codeproject.com/Articles/24969/An-MFC-picture-control-to-dynamically-show-picture
Chris Maunder, http://www.codeproject.com/Articles/32/An-auto-sizing-bitmap-picture-control
lion, http://www.codeproject.com/Articles/2340/CTreeCtrlEx-Setting-color-and-font-attribute-for-i
Uwe Keim, http://www.codeproject.com/Articles/1401/Changing-Row-Height-in-an-owner-drawn-Control
.dan.g., http://www.codeproject.com/Articles/1786/Ownerdraw-Tab-Controls-Borders-and-All
Koay Kah Hoe, http://www.codeproject.com/Articles/65/Print-Previewing-without-the-Document-View-
Framewo
Daniel Zuppinger, http://www.codeproject.com/Articles/1344/Reusable-base-class-for-SplitterWnd
Hans Dietrich, http://www.codeproject.com/Articles/1796/XListCtrl-A-custom-draw-list-control-with-subitem

2PAA116753- 11
Editline cmd_mon license

Editline cmd_mon license

// For editline and cmd_mon:


// Copyright (C) Ing. Buero Thomas Gallenkamp, Germany
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

2PAA116753- 12
Embedded System Paranoia

Embedded System Paranoia

#
# README file for ESP (Embedded System Paranoia)
#
# Revision: $Revision: 1.6 $
# Date: $Date: 2004/04/13 14:29:58 $
#-------------------------------------------------------------------
DISCLAIMER:

The source code and attached documentation is supplied "AS IS"


and free of charge. No liability can be accepted for any mistakes
in either the code or the documentation. No warranties are given
or implied.

By using it, you are accepting the generosity and expertise of all
the contributing authors so you must also accept the above exclusion
of any and all liability.
#-------------------------------------------------------------------
13-Apr-2004
===========
Added MATHS library tests (simple transcendental and hyperbolic tests).

No particular accuracy is specified by ISO C, so no pass or fails are


recorded. The idea is to present a series of identities for one
particular value and tests over a random range for certain
relationships between functions.

The results are recorded at the end under MATHS LIBRARY giving the
range of errors encountered. These should typically be no more than
around 5 * U1, where U1 is the closest separation of floating point
values for the precision used.

Les Hatton
UKC Computing Laboratory.

25-Mar-2004
===========

This is just a comment on the change which follows, kindly supplied by


Adrian Capel and Simon Dalley of UKAEA Culham. The ISO C90 and ISO C99
standards appear to imply an abstract model of computation which would
require them to take account of any default widening of, for example,
64-bit doubles to 80-bit long doubles. In particular, it requires
independence of any kind of optimisation. It is my reading therefore
that a fully conforming implementation should not be affected by

2PAA116753- 13
Embedded System Paranoia

this default widening in the same way that it should not be affected
by the internal float computation introduced in ISO C90 for efficiency
when two floats are combined arithmetically, (the earlier K&R C always
computed such expressions at double precision before converting back to
float precision).

By this comparison, Visual C++6.0 is an excellent implementation as it


is not affected by the default widening on AMD Athlon. gcc handles the
internal float computation correctly and passes without comment for
-DSINGLE but does not handle the default widening correctly so the
-DLONG_DOUBLE extension is necessary for gcc to pass without comment
rather than -DDOUBLE.

NOTE: The -DLONG_DOUBLE requires the compiler to have implemented the


ISO C99 run-time library extensions, fabsl(), floorl(), logl(), powl()
and sqrtl() as well as the other extended precision math library functions
if the transcendental or hyperbolic functions are tested.
Many embedded systems do not currently implement these.

*** BECAUSE OF THIS DOUBLE HAS BEEN REINSTATED AS THE DEFAULT ***

Les Hatton
UKC Computing Laboratory.

23-Mar-2004
===========

Added -DLONG_DOUBLE calculation size option. This is the default,


use -DSINGLE or -DDOUBLE explicitly to specify tests in single
(float) or double precision. -DLONG_DOUBLE allows correct testing of
systems such as x86 which use extended precision (80 active bits)
for the actual calculations and floating-point registers.

Such systems previously scored badly in the esparanoia tests. This is


because although the actual test variables are sized float or double
according to the compile option, the intermediate subexpressions are
calculated to 80 bits. Depending on compiler optimisations,
subexpressions, comparisons etc may be calculated in 80-bit registers,
regardless of their intended float or double size. To avoid this
problem, it is best to test using the same size as the compiler
assumes FPU calculations are done in.

A sanity check that compares the calculated and actual values of


EPSILON and warns if they are significantly different, has been added.
A discrepancy typically indicates that unwanted mixing of floating
sizes has occurred, and that the test results are therefore likely

2PAA116753- 14
Embedded System Paranoia

to be questionable.

A proper fix would involve only doing one floating-point operation at


a time and storing all intermediate results in temporaries of the size
under test.

Adrian Capel
Simon Dalley

UKAEA Culham

12-Mar-2004
===========
I have added a simple test to make sure setjmp is working for those
systems which have it. Just compile with the flag -DTESTSETJMP and
ESP will run and exit with a suitable comment if all is well.

26-Sep-2003
===========
I have now included simple but I hope adequate
functions to convert a float to a string (local_float2string()) and
an integer to a string, (local_int2string()) so that the message()
function is all you will have to supply.

I also noticed that the FLAW counter was only incremented once for
all arithmetic chopping failures so this is corrected to count each.

19-Sep-2003
===========
This version of paranoia was constructed to be able to run with minor
modification on embedded control systems which have so far not been
subjected to its rigour.

The original paranoia contained a number of things which tend not to


get implemented on many embedded control system C compilers. Where
possible I have bypassed these although there are a few things which
are determined by -D flags.

The floating point functions fabs, floor, log, pow and sqrt are expected
to be present. Many embedded systems today do indeed have these.

Finally, the original one was designed to be split into smaller pieces
because it didn't fit in some C compilers. Things have of course
moved on in 17 years so I have returned it to a single monolithic
program for convenience.

2PAA116753- 15
Embedded System Paranoia

Compiling it
============
On a Linux machine, just do:-

% gcc -Wall -o esp esparanoia.c -lm


% esp

The -lm brings in the maths library for fabs and the other functions
referenced above.

The example output, example.out included with the release is the output
of the command % esp > example.out, where esp is made as above under
SuSE 9.0 on an AMD Athlon.

-D flags which you should set (see note on 25-03-2004)


-----------------------------

1) -D SINGLE runs tests using single-precision floating point (usually


32 bits total)
2) -D DOUBLE (default) runs tests using double-precision floating point (usually
64 bits total)
3) -D LONG_DOUBLE runs tests using extended precision
(may be 64 - 96 bits). For example, on x86, a long double is 64 bits
mantissa, 16 bits sign and exponent, and 16 bits unused padding.
This will require at least a partial C99 implementation.

-D flags which you may have to set


----------------------------------
1) If your compiler does not support signal(), then use -D NOSIGNAL
2) If your compiler does not support standard IO, then use -D NOSTDIO
3) If your compiler does not support setjmp, then use -D NOSETJMP
4) Some targets might hang with a divide by zero so to stop esp from
doing this, use -D NOZERODIVIDE
5) If your compiler doesn't support transcendtal functions, then use
-DNOTRANSCENDENTAL.
5) If your compiler doesn't support hyperbolic functions, then use
-DNOHYPERBOLIC.

On an embedded system of course its a bit more difficult.

If you have to use -D NOSTDIO, you will have to go into


the code and add your own way of getting a string out of the target and
back to the host. This is done entirely within function message(). Look
for the string TODO.

That should be all you need to do.

2PAA116753- 16
Embedded System Paranoia

You can live without either signal.h or setjmp.h.

Then compile and link it on your host as usual, dump to the target and
start it. All the information is sent back through message() and there
is no interaction.

Remember that esp tests the response of your hardware and compiler
to arithmetic. Reported problems can be because of deficiencies in
either although it is traditional to adjust compiler run time libraries
to recover from hardware arithmetic defects. Note also the comments
above about default widening, 23-03-2004 and 25-03-2004.

The parent paranoia dates back 20 years to the original work


by William Kahan, and then Brian Wichmann, David Gay and Thomas Sumner.
However embedded systems have not been subjected much to this kind of test
so I would be very interested to know how you get on. Just send me
the output to either L.Hatton@kent.ac.uk or lesh@oakcomp.co.uk with
details of the system you ran it on (Compiler and target) and what
you had to do to message() to get the information out of the target.

Thanks and best of luck,

Les Hatton
September, 2003.

######################################################################
Note the following embedded instructions which were replayed interactively
by the original version. The embedded version is not interactive so
these have been transferred here to the README file.

/* Instructions */

msglist(s)
char **s;
{ while(*s) printf("%s\n", *s++); }

Instructions()
{
static char *instr[] = {
"Lest this program stop prematurely, i.e. before displaying\n",
" `END OF TEST',\n",
"try to persuade the computer NOT to terminate execution when an",
"error like Over/Underflow or Division by Zero occurs, but rather",
"to persevere with a surrogate value after, perhaps, displaying some",
"warning. If persuasion avails naught, don't despair but run this",

2PAA116753- 17
Embedded System Paranoia

"program anyway to see how many milestones it passes, and then",


"amend it to make further progress.\n",
"Answer questions with Y, y, N or n (unless otherwise indicated).\n",
0};

msglist(instr);
}

/* Heading */

Heading()
{
static char *head[] = {
"Users are invited to help debug and augment this program so it will",
"cope with unanticipated and newly uncovered arithmetic pathologies.\n",
"Please send suggestions and interesting results to",
"\tRichard Karpinski",
"\tComputer Center U-76",
"\tUniversity of California",
"\tSan Francisco, CA 94143-0704, USA\n",
"In doing so, please include the following information:",
#ifdef SINGLE
"\tPrecision:\tsingle;",
#else
"\tPrecision:\tdouble;",
#endif
"\tVersion:\t31 July 1986;",
"\tComputer:\n",
"\tCompiler:\n",
"\tOptimization level:\n",
"\tOther relevant compiler options:",
0};

msglist(head);
}

/* Characteristics */

Characteristics()
{
static char *chars[] = {
"Running this program should reveal these characteristics:",
" Radix = 1, 2, 4, 8, 10, 16, 100, 256 ...",
" Precision = number of significant digits carried.",
" U2 = Radix/Radix^Precision = One Ulp",
"\t(OneUlpnit in the Last Place) of 1.000xxx .",

2PAA116753- 18
Embedded System Paranoia

" U1 = 1/Radix^Precision = One Ulp of numbers a little less than 1.0 .",
" Adequacy of guard digits for Mult., Div. and Subt.",
" Whether arithmetic is chopped, correctly rounded, or something else",
"\tfor Mult., Div., Add/Subt. and Sqrt.",
" Whether a Sticky Bit used correctly for rounding.",
" UnderflowThreshold = an underflow threshold.",
" E0 and PseudoZero tell whether underflow is abrupt, gradual, or fuzzy.",
" V = an overflow threshold, roughly.",
" V0 tells, roughly, whether Infinity is represented.",
" Comparisions are checked for consistency with subtraction",
"\tand for contamination with pseudo-zeros.",
" Sqrt is tested. Y^X is not tested.",
" Extra-precise subexpressions are revealed but NOT YET tested.",
" Decimal-Binary conversion is NOT YET tested for accuracy.",
0};

msglist(chars);
}

History()

{ /* History */
/* Converted from Brian Wichmann's Pascal version to C by Thos Sumner,
with further massaging by David M. Gay. */

static char *hist[] = {


"The program attempts to discriminate among",
" FLAWs, like lack of a sticky bit,",
" Serious DEFECTs, like lack of a guard digit, and",
" FAILUREs, like 2+2 == 5 .",
"Failures may confound subsequent diagnoses.\n",
"The diagnostic capabilities of this program go beyond an earlier",
"program called `MACHAR', which can be found at the end of the",
"book `Software Manual for the Elementary Functions' (1980) by",
"W. J. Cody and W. Waite. Although both programs try to discover",
"the Radix, Precision and range (over/underflow thresholds)",
"of the arithmetic, this program tries to cope with a wider variety",
"of pathologies, and to say how well the arithmetic is implemented.",
"\nThe program is based upon a conventional radix representation for",
"floating-point numbers, but also allows logarithmic encoding",
"as used by certain early WANG machines.\n",
"BASIC version of this program (C) 1983 by Prof. W. M. Kahan;",
"see source comments for more history.",
0};

msglist(hist);

2PAA116753- 19
Embedded System Paranoia

}
######################################################################
The following comments were present in the original.

/* A C version of Kahan's Floating Point Test "Paranoia"

Thos Sumner, UCSF, Feb. 1985


David Gay, BTL, Jan. 1986

This is a rewrite from the Pascal version by

B. A. Wichmann, 18 Jan. 1985

(and does NOT exhibit good C programming style).

(C) Apr 19 1983 in BASIC version by:


Professor W. M. Kahan,
567 Evans Hall
Electrical Engineering & Computer Science Dept.
University of California
Berkeley, California 94720
USA

converted to Pascal by:


B. A. Wichmann
National Physical Laboratory
Teddington Middx
TW11 OLW
UK

converted to C by:

David M. Gay and Thos Sumner


AT&T Bell Labs Computer Center, Rm. U-76
600 Mountain Avenue University of California
Murray Hill, NJ 07974 San Francisco, CA 94143
USA USA

with simultaneous corrections to the Pascal source (reflected


in the Pascal source available over netlib).
[A couple of bug fixes from dgh = sun!dhough incorporated 31 July 1986.]

Reports of results on various systems from all the versions


of Paranoia are being collected by Richard Karpinski at the
same address as Thos Sumner. This includes sample outputs,
bug reports, and criticisms.

2PAA116753- 20
Embedded System Paranoia

You may copy this program freely if you acknowledge its source.
Comments on the Pascal version to NPL, please.

The C version catches signals from floating-point exceptions.


If signal(SIGFPE,...) is unavailable in your environment, you may
#define NOSIGNAL to comment out the invocations of signal.

This source file is too big for some C compilers, but may be split
into pieces. Comments containing "SPLIT" suggest convenient places
for this splitting. At the end of these comments is an "ed script"
(for the UNIX(tm) editor ed) that will do this splitting.

By #defining Single when you compile this source, you may obtain
a single-precision C version of Paranoia.

The following is from the introductory commentary from Wichmann's work:

The BASIC program of Kahan is written in Microsoft BASIC using many


facilities which have no exact analogy in Pascal. The Pascal
version below cannot therefore be exactly the same. Rather than be
a minimal transcription of the BASIC program, the Pascal coding
follows the conventional style of block-structured languages. Hence
the Pascal version could be useful in producing versions in other
structured languages.

Rather than use identifiers of minimal length (which therefore have


little mnemonic significance), the Pascal version uses meaningful
identifiers as follows [Note: A few changes have been made for C]:

BASIC C BASIC C BASIC C

A J S StickyBit
A1 AInverse J0 NoErrors T
B Radix [Failure] T0 Underflow
B1 BInverse J1 NoErrors T2 ThirtyTwo
B2 RadixD2 [SeriousDefect] T5 OneAndHalf
B9 BMinusU2 J2 NoErrors T7 TwentySeven
C [Defect] T8 TwoForty
C1 CInverse J3 NoErrors U OneUlp
D [Flaw] U0 UnderflowThreshold
D4 FourD K PageNo U1
E0 L Milestone U2

2PAA116753- 21
Embedded System Paranoia

E1 M V
E2 Exp2 N V0
E3 N1 V8
E5 MinSqEr O Zero V9
E6 SqEr O1 One W
E7 MaxSqEr O2 Two X
E8 O3 Three X1
E9 O4 Four X8
F1 MinusOne O5 Five X9 Random1
F2 Half O8 Eight Y
F3 Third O9 Nine Y1
F6 P Precision Y2
F9 Q Y9 Random2
G1 GMult Q8 Z
G2 GDiv Q9 Z0 PseudoZero
G3 GAddSub R Z1
H R1 RMult Z2
H1 HInverse R2 RDiv Z9
I R3 RAddSub
IO NoTrials R4 RSqrt
I3 IEEE R9 Random9

SqRWrng

All the variables in BASIC are true variables and in consequence,


the program is more difficult to follow since the "constants" must
be determined (the glossary is very helpful). The Pascal version
uses Real constants, but checks are added to ensure that the values
are correctly converted by the compiler.

The major textual change to the Pascal version apart from the
identifiersis that named procedures are used, inserting parameters
wherehelpful. New procedures are also introduced. The
correspondence is as follows:

BASIC Pascal
lines

90- 140 Pause


170- 250 Instructions
380- 460 Heading
480- 670 Characteristics
690- 870 History
2940-2950 Random
3710-3740 NewD

2PAA116753- 22
Embedded System Paranoia

4040-4080 DoesYequalX
4090-4110 PrintIfNPositive
4640-4850 TestPartialUnderflow

2PAA116753- 23
Fdmlib 1993 license

Fdmlib 1993 license

* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================

Fdmlib 2004 license

* ====================================================
* Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved.
*
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================

2PAA116753- 24
Infozip 2005-Feb-10

Infozip 2005-Feb-10

This is version 2005-Feb-10 of the Info-ZIP copyright and license.


The definitive version of this document should be available at
ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely.

Copyright (c) 1990-2005 Info-ZIP. All rights reserved.

For the purposes of this copyright and license, "Info-ZIP" is defined as


the following set of individuals:

Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth,
Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda,
Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren,
Rich Wales, Mike White

This software is provided "as is," without warranty of any kind, express
or implied. In no event shall Info-ZIP or its contributors be held liable
for any direct, indirect, incidental, special or consequential damages
arising out of the use of or inability to use this software.

Permission is granted to anyone to use this software for any purpose,


including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. Redistributions of source code must retain the above copyright notice,


definition, disclaimer, and this list of conditions.

2. Redistributions in binary form (compiled executables) must reproduce


the above copyright notice, definition, disclaimer, and this list of
conditions in documentation and/or other materials provided with the
distribution. The sole exception to this condition is redistribution
of a standard UnZipSFX binary (including SFXWiz) as part of a
self-extracting archive; that is permitted without inclusion of this
license, as long as the normal SFX banner has not been removed from
the binary or disabled.

3. Altered versions--including, but not limited to, ports to new operating


systems, existing ports with new graphical interfaces, and dynamic,
shared, or static library versions--must be plainly marked as such
and must not be misrepresented as being the original source. Such

2PAA116753- 25
Infozip 2005-Feb-10

altered versions also must not be misrepresented as being Info-ZIP


releases--including, but not limited to, labeling of the altered
versions with the names "Info-ZIP" (or any variation thereof, including,
but not limited to, different capitalizations), "Pocket UnZip," "WiZ"
or "MacZip" without the explicit permission of Info-ZIP. Such altered
versions are further prohibited from misrepresentative use of the
Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s).

4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip,"
"UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its
own source and binary releases.

2PAA116753- 26
Minizip 0.22

Minizip 0.22

Version 0.22, May 19th, 2003

Copyright (C) 1998-2003 Gilles Vollant

This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g
WinZip, InfoZip tools and compatible.
Encryption and multi volume ZipFile (span) are not supported.
Old compressions used by old PKZip 1.x are not supported

I WAIT FEEDBACK at mail info@winimage.com


Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution

Condition of use and distribution are the same than zlib :

This software is provided 'as-is', without any express or implied


warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,


including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

2PAA116753- 27
Microsoft Limited Public License (Ms-LPL)

Microsoft Limited Public License (Ms-LPL)


This license governs use of the accompanying software. If you use the software, you accept this
license. If you do not accept the license, do not use the software.

1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same
meaning here as under U.S. copyright law. A "contribution" is the original software, or any additions
or changes to the software. A "contributor" is any person that distributes its contribution under this
license. "Licensed patents" are a contributor's patent claims that read directly on its contribution.

2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and
limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free
copyright license to reproduce its contribution, prepare derivative works of its contribution, and
distribute its contribution or any derivative works that you create.

(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations
in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its
licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its
contribution in the software or derivative works of the contribution in the software.

3. Conditions and Limitations


(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo,
or trademarks.

(B) If you bring a patent claim against any contributor over patents that you claim are infringed by
the software, your patent license from such contributor to the software ends automatically.

(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark,
and attribution notices that are present in the software.

(D) If you distribute any portion of the software in source code form, you may do so only under this
license by including a complete copy of this license with your distribution. If you distribute any
portion of the software in compiled or object code form, you may only do so under a license that
complies with this license.

(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express
warranties, guarantees, or conditions. You may have additional consumer rights under your local
laws which this license cannot change. To the extent permitted under your local laws, the
contributors exclude the implied warranties of merchantability, fitness for a particular purpose and
non-infringement.

(F) Platform Limitation- The licenses granted in sections 2(A) & 2(B) extend only to the software or
derivative works that you create that run on a Microsoft Windows operating system product.

2PAA116753- 28
Mike Scott Rijndael implementation license

Mike Scott Rijndael implementation license

/* Rijndael Block Cipher - rijndael.c

Written by Mike Scott 21st April 1999


mike@computing.dcu.ie

Copyright (c) 1999 Mike Scott

Permission is hereby granted, free of charge, to any person obtaining a copy


of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Written for clarity, rather than speed.


Assumes long is 32 bit quantity.
Full implementation.
Endian indifferent.
*/

2PAA116753- 29
SoftFloat 2b

SoftFloat 2b

Package Overview for SoftFloat Release 2b

John R. Hauser
2002 May 27

----------------------------------------------------------------------------
Overview

SoftFloat is a software implementation of floating-point that conforms to


the IEC/IEEE Standard for Binary Floating-Point Arithmetic. SoftFloat is
distributed in the form of C source code. Compiling the SoftFloat sources
generates two things:

-- A SoftFloat object file (typically `softfloat.o') containing the complete


set of IEC/IEEE floating-point routines.

-- A `timesoftfloat' program for evaluating the speed of the SoftFloat


routines. (The SoftFloat module is linked into this program.)

The SoftFloat package is documented in four text files:

SoftFloat.txt Documentation for using the SoftFloat functions.


SoftFloat-source.txt Documentation for compiling SoftFloat.
SoftFloat-history.txt History of major changes to SoftFloat.
timesoftfloat.txt Documentation for using `timesoftfloat'.

Other files in the package comprise the source code for SoftFloat.

Please be aware that some work is involved in porting this software to other
targets. It is not just a matter of getting `make' to complete without
error messages. I would have written the code that way if I could, but
there are fundamental differences between systems that can't be hidden.
You should not attempt to compile SoftFloat without first reading both
`SoftFloat.txt' and `SoftFloat-source.txt'.

----------------------------------------------------------------------------
Legal Notice

SoftFloat was written by me, John R. Hauser. This work was made possible in
part by the International Computer Science Institute, located at Suite 600,
1947 Center Street, Berkeley, California 94704. Funding was partially
provided by the National Science Foundation under grant MIP-9311980. The

2PAA116753- 30
SoftFloat 2b

original version of this code was written as part of a project to build


a fixed-point vector processor in collaboration with the University of
California at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek.

THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort


has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL
LOSSES, COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO
FURTHERMORE EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER
SCIENCE INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES,
COSTS, OR OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE
SOFTWARE.

Derivative works are acceptable, even for commercial purposes, provided


that the minimal documentation requirements stated in the source code are
satisfied.

----------------------------------------------------------------------------
Contact Information

At the time of this writing, the most up-to-date information about


SoftFloat and the latest release can be found at the Web page `http://
www.cs.berkeley.edu/~jhauser/arithmetic/SoftFloat.html'.

2PAA116753- 31
Tinypy License

Tinypy License

/****************************************************************
The tinypy License (known as MIT License)

Copyright (c) 2008 Phil Hassey

Permission is hereby granted, free of charge, to any person obtaining a copy


of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************

2PAA116753- 32
Vprintf - copyright

Vprintf - copyright

* Copyright (c) 1988 Regents of the University of California.


* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted provided
* that: (1) source distributions retain this entire copyright notice and
* comment, and (2) distributions including binaries display the following
* acknowledgement: ``This product includes software developed by the
* University of California, Berkeley and its contributors'' in the
* documentation or other materials provided with the distribution and in
* all advertising materials mentioning features or use of this software.
* Neither the name of the University nor the names of its contributors may
* 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
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

2PAA116753- 33
WinIo 1.2

WinIo 1.2
------------------------------------------------------------
WinIo v1.2
Direct Hardware Access Under Windows 9x/NT/2000
Copyright 1998-2000 Yariv Kaplan
http://www.internals.com
------------------------------------------------------------

The WinIo library allows 32-bit Windows applications to directly


access I/O ports and physical memory. It bypasses Windows protection
mechanisms by using a combination of a kernel-mode device driver and
several low-level programming techniques.

Under Windows NT, the WinIo library can only be used by applications
that have administrative privileges. If the user is not logged on as
an administrator, the WinIo DLL is unable to install and activate the
WinIo driver. It is possible to overcome this limitation by installing
the driver once through an administrative account. In that case, however,
the ShutdownWinIo function must not be called before the application
is terminated, since this function removes the WinIo driver from the
system's registry.

The library exports 8 functions:

----------------------------------------------------------------------------

bool _stdcall InitializeWinIo();

This function initializes the WinIo library.

For applications running under Windows NT/2000, this function


must be called before calling any other function in the library.

Windows 9x applications are not required to call this function.

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

----------------------------------------------------------------------------

void _stdcall ShutdownWinIo();

This function performs cleanup of the WinIo library.

For applications running under Windows NT/2000, this function

2PAA116753- 34
WinIo 1.2

must be called before terminating the application or when the


WinIo library is no longer required.

Windows 9x applications are not required to call this function.

----------------------------------------------------------------------------

bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);

Use this function to read a BYTE/WORD/DWORD value from an I/O port.

Parameters:

wPortAddr - I/O port address

pdwPortVal - Pointer to a DWORD variable that receives the value


obtained from the port.

bSize - Number of bytes to read.


Can be 1 (BYTE), 2 (WORD) or 4 (DWORD).

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

----------------------------------------------------------------------------

bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);

Use this function to write a BYTE/WORD/DWORD value to an I/O port.

Parameters:

wPortAddr - I/O port address

dwPortVal - A DWORD value to be written to the port

bSize - Number of bytes to write.


Can be 1 (BYTE), 2 (WORD) or 4 (DWORD).

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

----------------------------------------------------------------------------

2PAA116753- 35
WinIo 1.2

PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE


*pPhysicalMemoryHandle)

Use this function to map a region of physical memory into the linear address
space of a 32-bit Windows application.

Here is an example:

PBYTE pbLinAddr;
HANDLE PhysicalMemoryHandle;

pbLinAddr = MapPhysToLin(0xA0000, 65536, &PhysicalMemoryHandle);

The function will map physical addresses 0xA0000 - 0xAFFFF into the linear
address space of the application. The value returned is a linear address
corresponding to physical address 0xA0000. In case of an error, the return
value is NULL.

Parameters:

pbPhysAddr - Pointer to the physical address

dwPhysSize - Number of bytes to map

pPhysicalMemoryHandle - Points to a variable that will receive the physical memory section
handle if this call is successful. This handle is later used as
the first parameter when calling the UnmapPhysicalMemory function.

----------------------------------------------------------------------------

bool _stdcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr)

Use this function to unmap a region of physical memory which was previously mapped
to the linear address space of the application using the MapPhysToLin function.

Windows 9x applications are not required to call this function.

Parameters:

PhysicalMemoryHandle - Handle to the physical memory section which was returned


from the call to the MapPhysToLin function.

pbLinAddr - Linear address which was returned from the call to the MapPhysToLin
function.

----------------------------------------------------------------------------

2PAA116753- 36
WinIo 1.2

bool _stdcall GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);

This function reads one DWORD from the specified physical address.

Parametes:

pbPhysAddr - Pointer to the physical address

pdwPhysVal - Pointer to a DWORD variable that receives the value


obtained from the physical memory location.

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

----------------------------------------------------------------------------

bool _stdcall SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);

This function writes one DWORD to the specified physical address.

Parametes:

pbPhysAddr - Pointer to the physical address

pdwPhysVal - Specifies a DWORD value to be written to the physical


memory location.

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.

----------------------------------------------------------------------------
A NOTE FOR VB USERS
----------------------------------------------------------------------------

To use winio.dll with a 32-bit Visual-Basic application you need to:

1. Place winio.dll and winio.sys in the same directory as your executable file.

2. Add winio.bas to your project.

----------------------------------------------------------------------------
LEGAL STUFF
----------------------------------------------------------------------------

2PAA116753- 37
WinIo 1.2

The following terms apply to all files associated with the software
unless explicitly disclaimed in individual files.

The author hereby grants permission to use, copy, modify, distribute,


and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.

IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY


FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHOR HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,


INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHOR AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

I can be reached at: yariv@internals.com

Yariv Kaplan

2PAA116753- 38
WndTabs

WndTabs

/***************************************************************************/
/* NOTE: */
/* This document is copyright (c) by Oz Solomonovich, and is bound by the */
/* MIT open source license (www.opensource.org/licenses/mit-license.html). */
/* See License.txt for more information. */
/***************************************************************************/

2PAA116753- 39
Zlib 1.1.3

Zlib 1.1.3

zlib 1.1.3 is a general purpose data compression library. All the code
is thread safe. The data format used by the zlib library
is described by RFCs (Request for Comments) 1950 to 1952 in the files
ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
format) and rfc1952.txt (gzip format). These documents are also available in
other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html

All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact jloup@gzip.org). A usage
example of the library is given in the file example.c which also tests that
the library is working correctly. Another example is given in the file
minigzip.c. The compression library itself is composed of all source files
except example.c and minigzip.c.

To compile all files and run the test program, follow the instructions
given at the top of Makefile. In short "make test; make install"
should work for most machines. For Unix: "configure; make test; make install"
For MSDOS, use one of the special makefiles such as Makefile.msc.
For VMS, use Make_vms.com or descrip.mms.

Questions about zlib should be sent to <zlib@quest.jpl.nasa.gov>, or to


Gilles Vollant <info@winimage.com> for the Windows DLL version.
The zlib home page is http://www.cdrom.com/pub/infozip/zlib/
The official zlib ftp site is ftp://ftp.cdrom.com/pub/infozip/zlib/
Before reporting a problem, please check those sites to verify that
you have the latest version of zlib; otherwise get the latest version and
check whether the problem still exists or not.

Mark Nelson <markn@tiny.com> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available in
http://web2.airmail.net/markn/articles/zlibtool/zlibtool.htm

The changes made in version 1.1.3 are documented in the file ChangeLog.
The main changes since 1.1.2 are:

- fix "an inflate input buffer bug that shows up on rare but persistent
occasions" (Mark)
- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
- fix gzseek(..., SEEK_SET) in write mode
- fix crc check after a gzeek (Frank Faubert)
- fix miniunzip when the last entry in a zip file is itself a zip file
(J Lillge)
- add contrib/asm586 and contrib/asm686 (Brian Raiter)
See http://www.muppetlabs.com/~breadbox/software/assembly.html

2PAA116753- 40
Zlib 1.1.3

- add support for Delphi 3 in contrib/delphi (Bob Dellaca)


- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
- added a FAQ file

plus many changes for portability.

Unsupported third party contributions are provided in directory "contrib".

A Java implementation of zlib is available in the Java Development Kit 1.1


http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
See the zlib home page http://www.cdrom.com/pub/infozip/zlib/ for details.

A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>


is in the CPAN (Comprehensive Perl Archive Network) sites, such as:
ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib*

A Python interface to zlib written by A.M. Kuchling <amk@magnet.com>


is available in Python 1.5 and later versions, see
http://www.python.org/doc/lib/module-zlib.html

A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com>


is availlable at http://www.westend.com/~kupries/doc/trf/man/man.html

An experimental package to read and write files in .zip format,


written on top of zlib by Gilles Vollant <info@winimage.com>, is
available at http://www.winimage.com/zLibDll/unzip.html
and also in the contrib/minizip directory of zlib.

Notes for some targets:

- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc


and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
The zlib DLL support was initially done by Alessandro Iacopetti and is
now maintained by Gilles Vollant <info@winimage.com>. Check the zlib DLL
home page at http://www.winimage.com/zLibDll

From Visual Basic, you can call the DLL functions which do not take
a structure as argument: compress, uncompress and all gz* functions.
See contrib/visual-basic.txt for more information, or get
http://www.tcfb.com/dowseware/cmp-z-it.zip

- For 64-bit Irix, deflate.c must be compiled without any optimization.


With -O, one libpng test fails. The test works in 32 bit mode (with

2PAA116753- 41
Zlib 1.1.3

the -n32 compiler flag). The compiler bug has been reported to SGI.

- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
it works when compiled with cc.

- on Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1


is necessary to get gzprintf working correctly. This is done by configure.

- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works
with other compilers. Use "make test" to check your compiler.

- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.

- For Turbo C the small model is supported only with reduced performance to
avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3

- For PalmOs, see http://www.cs.uit.no/~perm/PASTA/pilot/software.html


Per Harald Myrvang <perm@stud.cs.uit.no>

Acknowledgments:

The deflate format used by zlib was defined by Phil Katz. The deflate
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
people who reported problems and suggested various improvements in zlib;
they are too numerous to cite here.

Copyright notice:

(C) 1995-1998 Jean-loup Gailly and Mark Adler

This software is provided 'as-is', without any express or implied


warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,


including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

2PAA116753- 42
Zlib 1.1.3

Jean-loup Gailly Mark Adler


jloup@gzip.org madler@alumni.caltech.edu

If you use the zlib library in a product, we would appreciate *not*


receiving lengthy legal documents to sign. The sources are provided
for free but without warranty of any kind. The library has been
entirely written by Jean-loup Gailly and Mark Adler; it does not
include third-party code.

If you redistribute modified sources, we would appreciate that you include


in the file ChangeLog history information documenting your changes.

2PAA116753- 43
Zlib 1.1.4

Zlib 1.1.4

/* zlib.h -- interface of the 'zlib' general purpose compression library version 1.1.4, March 11th, 2002
Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,


including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

Jean-loup Gailly Mark Adler


jloup@gzip.org madler@alumni.caltech.edu

The data format used by the zlib library is described by RFCs (Request for
Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
*/

2PAA116753- 44

You might also like