NAME
"Encode::Float" - Encode/decode float as a string for sorting.
SYNOPSIS
use Encode::Float;
my $encoder = Encode::Float->new();
my @list;
for (my $i = 0 ; $i < 10 ; $i++)
{
my $float = (.5 - rand) * 10**int(10 - 20 * rand);
$float = 0 if $i == 0;
my $encoded = $encoder->encode($float);
my $decoded = $encoder->decode($encoded);
my $error = $encoder->getRelativeDifference($float, $decoded);
push @list, [ $encoded, $float, $decoded, $error ];
}
@list = sort { $a->[0] cmp $b->[0] } @list;
foreach (@list)
{
print join(',', @$_) . "\n";
}
DESCRIPTION
"Encode::Float" encodes and decodes floating point numbers as fixed
length positive decimal integers that preserve their order (less
rounding errors), that is, sorting the encoded integers also sorts the
floating point numbers.
CONSTRUCTOR
"new"
The method "new" creates an instance of the "Encode::Float" class with
the following parameter:
"digitsOfAccuracy"
digitsOfAccuracy => 16
"digitsOfAccuracy" is an optional parameter that sets the number of
decimal digits to preserve in the floating point number; the default
is 16.
METHODS
"encode"
The method "encode" takes a floating point number as its only parameter
and returns its integer encoding.
"decode"
The method "decode" takes an encoded floating point number (a positive
integer) and returns its floating point number.
"getRelativeDifference"
The method "getRelativeDifference (floatA, floatB)" computes the
relative difference between the floating point numbers "floatA" and
"floatB", which is "abs(floatA - floatB)/max(abs(floatA), abs(floatB))"
or zero if both numbers are zero.
INSTALLATION
Use CPAN to install the module and all its prerequisites:
perl -MCPAN -e shell
>install Encode::Float
BUGS
Please email bugs reports or feature requests to
"bug-encode-float@rt.cpan.org", or through the web interface at
<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Encode-Float>. The
author will be notified and you can be automatically notified of
progress on the bug fix or feature request.
AUTHOR
Jeff Kubina<jeff.kubina@gmail.com>
COPYRIGHT
Copyright (c) 2013 Jeff Kubina. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.
The full text of the license can be found in the LICENSE file included
with this module.
KEYWORDS
decoding, double, encoding, float
SEE ALSO
CPAN, Sort::External