From 31522d799c1635a8f72a1947370426bbb9be3048 Mon Sep 17 00:00:00 2001 From: PeterCJ Date: Fri, 8 Jul 2016 16:45:04 -0700 Subject: [PATCH] v0.010 Fri Jul 08 16:50:00 PDT 2016 - Initial release --- CHANGES | 48 +++-------------------------- Data-IEEE754-Tools-v0.010.tar.gz | Bin 0 -> 16829 bytes LICENSE | 18 +++++++++++ MANIFEST | 12 ++++++++ Makefile.PL | 17 +++-------- README | 51 +++++++++++++------------------ Tools.pm | 24 +++++++++------ t/01-raw754.t | 8 ----- t/02-floatingpoint.t | 8 ----- t/03-ulp.t | 8 ----- t/04-nextupdown.t | 8 ----- t/05-nextafter.t | 8 ----- 12 files changed, 75 insertions(+), 135 deletions(-) create mode 100644 Data-IEEE754-Tools-v0.010.tar.gz create mode 100644 LICENSE create mode 100644 MANIFEST diff --git a/CHANGES b/CHANGES index 7508174..73fc651 100644 --- a/CHANGES +++ b/CHANGES @@ -1,47 +1,7 @@ Revision history for Perl module Data::IEEE754::Tools. -TODO: v0.010 initial release? +v0.010 Fri Jul 08 16:50:00 PDT 2016 + - Initial release -v0.008 Thu Jul 07 - - Start simplification of expand_ieee754() to to_hex/dec_floatingpoint(), - using BrowserUK's suggestion that simpler is better. They utilize the - more standard "-0x1.0123456789abcp+0000" notation - - remove expand_ieee754 - - rename val_toggle_ulp to toggle_ulp - - update test suite / names - - add nextup(), nextdown(), nextafter(), and tests - - bug fix ulp/next*.t: include IND in the list of NAN|INF|IND - to ensure that on systems that distinguish -1.#IND from -1.#NAN, - it will still use the text-eq instead of numeric-==. - - bug fix nextafter.t: for nextafter(*NAN, +NAN), need to expect - the value (*NAN), not the direction (+NAN). - - bug fix to_xxx_floatingpoint(-1.#IND) and associated floatingpoint.t: - comparing against wrong $mant for -1.#IND, and wrongly expecting -1.#QNAN - -v0.007 Thu Jun 30 - - Add ulp() and val_toggle_ulp() functions - - Experimented with value_plus/minus_ulp(), but deleted after major bug, - and discovered Data::Float, which has working versions of - -v0.006 Wed Jun 29 - - Full POD; good estimated test coverage - -v0.005 Tue Jun 28 - - Rework options processing - - Improve POD - - Improve test coverage - - Fix bugs found during test coverage debug - -v0.004 Tue Jun 21 - - Rename to Data::IEEE754::Tools.pm - -v0.003 Tue Jun 21 - - First "reasonably functional" version - -v0.002 Sat Jun 18 - - Convert to Data::IEEE754::Expand.pm - - Add initial error handling - -v0.001 Thu May 26 - Private (pryrt) - - Initial DataFormatIeee.pl proof-of-concept +v0.001 - v0.008 + - Private development diff --git a/Data-IEEE754-Tools-v0.010.tar.gz b/Data-IEEE754-Tools-v0.010.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a5a343d60d68b0a5c96c3a127455d020119f1307 GIT binary patch literal 16829 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 G2m%28%XWqU literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3fe96d9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,18 @@ +AUTHOR + +Peter C. Jones + +Please report any bugs or feature requests emailing +or thru the web interface at + +COPYRIGHT + +Copyright (C) 2016 Peter C. Jones + +LICENCE + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See for more information. diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..9dbeb24 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,12 @@ +CHANGES +LICENSE +Makefile.PL +MANIFEST This list of files +README +t/00-load.t +t/01-raw754.t +t/02-floatingpoint.t +t/03-ulp.t +t/04-nextupdown.t +t/05-nextafter.t +Tools.pm diff --git a/Makefile.PL b/Makefile.PL index 3cf2f2d..8708bc0 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -10,24 +10,21 @@ use 5.008005; 'PREREQ_PM' => { 'Exporter' => 0, 'version' => 0.77, + 'warnings' => 0, + 'strict' => 0, + 'Carp' => 0, }, ); { no warnings; - if( $ExtUtils::MakeMaker::VERSION > '6.17' ) { + if( $ExtUtils::MakeMaker::VERSION >= '6.46' ) { $mm_args{META_MERGE} = { resources => { bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=Data-IEEE754-Tools', repository => 'https://github.com/pryrt/Data-IEEE754-Tools', }, - keywords => [ 'IEEE-754', 'floating point representation', 'fraction' ], - provides => { - 'Data::IEEE754::Tools' => { - file => 'Tools.pm', - version => 0.04, - }, - }, + keywords => [ 'IEEE-754', 'floating point representation'], }, } if( $ExtUtils::MakeMaker::VERSION >= '6.31' ) { @@ -41,10 +38,6 @@ use 5.008005; 'ExtUtils::MakeMaker' => 0, }, } -# if( $ExtUtils::MakeMaker::VERSION >= '6.5503' ) { -# $mm_args{BUILD_REQUIRES} = { -# }, -# } if( $ExtUtils::MakeMaker::VERSION >= '6.64' ) { $mm_args{TEST_REQUIRES} = { 'warnings' => 0, diff --git a/README b/README index a25375e..f0d6ee3 100644 --- a/README +++ b/README @@ -4,42 +4,35 @@ Data::IEEE754::Tools - Various tools for understanding and manipulating the unde DESCRIPTION -It appears that L includes most of the functionality, but using IEEE 754 -standard function names... That may be a better choice, unless you've got a need -for one of these specific implementations. +These tools give access to the underlying IEEE 754 floating-point +representation used by Perl (see perlguts). They include functions for +converting from the 64bit internal representation to a string that shows +those bits (either as hexadecimal or binary) and back, functions for +converting that encoded value into a more human-readable format to give +insight into the meaning of the encoded values, and functions to +manipulate the smallest possible change for a given floating-point value +(which is the ULP +or "Unit in the Last Place"). -The L standard describes -various floating-point encodings. The double format (`binary64') is a 64-bit base-2 -encoding, and correpsonds to the usual Perl floating value (NV). The format includes the -sign (s), the power of 2 (q), and a coefficient (c): C. -The C<(-1)**s> term evaluates to the SIGN of the number, where s=0 means the sign -is +1 and s=1 means the sign is -1. -The coefficient is internally encoded as an implied 1 plus an encoded FRACTION, -which is itself encoded as a 52-bit integer divided by an implied 2**52. - -L, or the equivalent L recipe L>, do a -good job of converting a perl floating value (NV) into the big-endian bytes -that encode that value, but they don't help you interpret the value. +INSTALLATION -This B module takes it to the next step, and provideds -the tools to expand the encoded floating point value into its component sign, -fraction, and exponent, so you can see how it is encoded internally. +To install this module, use your favorite CPAN client. -There are also functions available to let you know what the -L ("Unit in the Last Place") -is for a given value, and another that returns the original value, but modified -by just one ULP (toggle the ULP bit). +For a manual install, type the following: + perl Makefile.PL + make + make test + make install -INSTALLATION +(On Windows machines, you may need to use "dmake" instead of "make".) -To install this module type the following: +AUTHOR - perl Makefile.PL - make - make test - make install +Peter C. Jones +Please report any bugs or feature requests emailing +or thru the web interface at COPYRIGHT @@ -51,4 +44,4 @@ This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. -See L for more information. +See for more information. diff --git a/Tools.pm b/Tools.pm index af44084..c9d2543 100644 --- a/Tools.pm +++ b/Tools.pm @@ -78,15 +78,6 @@ appropriate. =cut -######################################################################## -# Subversion Info -# $Author: pryrtmx $ -# $Date: 2016-07-07 06:57:25 -0700 (Thu, 07 Jul 2016) $ -# $Revision: 216 $ -# $URL: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/Tools.pm $ -# $Header: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/Tools.pm 216 2016-07-07 13:57:25Z pryrtmx $ -# $Id: Tools.pm 216 2016-07-07 13:57:25Z pryrtmx $ -######################################################################## package Data::IEEE754::Tools; use 5.008005; use warnings; @@ -94,7 +85,7 @@ use strict; use Carp; use Exporter 'import'; # just use the import() function, without the rest of the overhead of ISA -use version 0.77; our $VERSION = version->declare('v0.008'); +use version 0.77; our $VERSION = version->declare('v0.010'); =head1 EXPORTABLE FUNCTIONS AND VARIABLES @@ -466,6 +457,19 @@ sub nextafter { Include all of the above. +=head1 INSTALLATION + +To install this module, use your favorite CPAN client. + +For a manual install, type the following: + + perl Makefile.PL + make + make test + make install + +(On Windows machines, you may need to use "dmake" instead of "make".) + =head1 SEE ALSO =over diff --git a/t/01-raw754.t b/t/01-raw754.t index d330b4d..edee2fa 100644 --- a/t/01-raw754.t +++ b/t/01-raw754.t @@ -6,14 +6,6 @@ # hexstr754_to_double() # binstr754_to_double() ######################################################################## -# Subversion Info -# $Author: pryrtmx $ -# $Date: 2016-07-06 09:15:17 -0700 (Wed, 06 Jul 2016) $ -# $Revision: 210 $ -# $URL: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/01-raw754.t $ -# $Header: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/01-raw754.t 210 2016-07-06 16:15:17Z pryrtmx $ -# $Id: 01-raw754.t 210 2016-07-06 16:15:17Z pryrtmx $ -######################################################################## use 5.008005; use warnings; use strict; diff --git a/t/02-floatingpoint.t b/t/02-floatingpoint.t index f5deff1..45e1fc9 100644 --- a/t/02-floatingpoint.t +++ b/t/02-floatingpoint.t @@ -4,14 +4,6 @@ # to_hex_floatingpoint(v) # to_dec_floatingpoint(v) ######################################################################## -# Subversion Info -# $Author: pryrtmx $ -# $Date: 2016-07-07 13:37:19 -0700 (Thu, 07 Jul 2016) $ -# $Revision: 222 $ -# $URL: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/02-floatingpoint.t $ -# $Header: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/02-floatingpoint.t 222 2016-07-07 20:37:19Z pryrtmx $ -# $Id: 02-floatingpoint.t 222 2016-07-07 20:37:19Z pryrtmx $ -######################################################################## use 5.008005; use warnings; use strict; diff --git a/t/03-ulp.t b/t/03-ulp.t index 4f30927..a6b7ecb 100644 --- a/t/03-ulp.t +++ b/t/03-ulp.t @@ -5,14 +5,6 @@ # toggle_ulp(v) # remaining :ulp features in next test(s) ######################################################################## -# Subversion Info -# $Author: pryrtmx $ -# $Date: 2016-07-07 13:37:19 -0700 (Thu, 07 Jul 2016) $ -# $Revision: 222 $ -# $URL: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/03-ulp.t $ -# $Header: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/03-ulp.t 222 2016-07-07 20:37:19Z pryrtmx $ -# $Id: 03-ulp.t 222 2016-07-07 20:37:19Z pryrtmx $ -######################################################################## use 5.008005; use warnings; use strict; diff --git a/t/04-nextupdown.t b/t/04-nextupdown.t index bee0ef2..801d476 100644 --- a/t/04-nextupdown.t +++ b/t/04-nextupdown.t @@ -5,14 +5,6 @@ # nextdown(v) # (other :ulp tests in other .t files) ######################################################################## -# Subversion Info -# $Author: pryrtmx $ -# $Date: 2016-07-07 13:37:19 -0700 (Thu, 07 Jul 2016) $ -# $Revision: 222 $ -# $URL: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/04-nextupdown.t $ -# $Header: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/04-nextupdown.t 222 2016-07-07 20:37:19Z pryrtmx $ -# $Id: 04-nextupdown.t 222 2016-07-07 20:37:19Z pryrtmx $ -######################################################################## use 5.008005; use warnings; use strict; diff --git a/t/05-nextafter.t b/t/05-nextafter.t index 6be5535..d810f47 100644 --- a/t/05-nextafter.t +++ b/t/05-nextafter.t @@ -4,14 +4,6 @@ # nextafter(v, dir) # (other :ulp coverage in other .t files) ######################################################################## -# Subversion Info -# $Author: pryrtmx $ -# $Date: 2016-07-07 13:37:19 -0700 (Thu, 07 Jul 2016) $ -# $Revision: 222 $ -# $URL: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/05-nextafter.t $ -# $Header: https://subversion.assembla.com/svn/pryrt/trunk/perl/Data-IEEE754-Tools/t/05-nextafter.t 222 2016-07-07 20:37:19Z pryrtmx $ -# $Id: 05-nextafter.t 222 2016-07-07 20:37:19Z pryrtmx $ -######################################################################## use 5.008005; use warnings; use strict;