Sisyphus > Math-NV-0.01 > Math::NV

Download:
Math-NV-0.01.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  1
View/Report Bugs
Module Version: 0.01   Source   Latest Release: Math-NV-0.02

NAME ^

Math::NV - assign correct value to perl's NV

DESCRIPTION ^

   use Math::NV qw(:all);
   my $nv = nv('1e-298'); # ie the number 10 ** -298

   The above snippet will assign a correct value for 1e-298 to $nv.
   Doing simply "$nv = 1e-298;" may *not* do that. (The test suite
   specifically checks and reports whether 1e-298 can correctly be
   assigned directly to a perl scalar. It also checks some other
   values).

   The nv() function assigns the value at the C (XS) level using
   either the C function strtod() or strtold() - whichever is 
   appropriate for your perl's configuration.

   Obviously, we are therefore relying upon absence of bugs in the
   way your compiler/libc assigns strings to floats. (Hopefully, if
   such bugs are present, this will become evident in the form of
   failures in the module's test suite.)

FUNCTIONS ^

   $nv = nv($str);

    On perls whose NV is a C "double", assigns to $nv the value that
    the C standard library function strtod($str) assigns.
    On perls whose NV is a C "long double", assigns to $nv the value
    that the C standard library function strtold($str) assigns.

   $nv_type = nv_type();

    Returns either "double" or "long double", depending upon the way
    perl has been configured.
    The expectation is that it returns the same as $Config{nvtype}.
    (Please file a bug report if you find otherwise.)

   $digits = mant_dig();

    Returns the number of bits the NV mantissa contains. This is
    normally 53 if nv_type() is double - otherwise usually (but by no
    means always) 64.
    It returns the value of the C macro DBL_MANT_DIG or LDBL_MANT_DIG,
    depending upon whichever is appropriate for perl's configuration.

   ($mantissa, $exponent, $precision) = ld2binary($nv, $flag);

    Returns a base 2 representation of the long double value contained
    in the NV $nv.
    If $flag is true, it also prints out additional information during
    calculation.
    $mantissa is the mantissa (significand).
    $exponent is the exponent.
    $precision is the precision (in bits) of the mantissa - trailing
    zero bits are not counted.
    For doubles, use Data::Float's float_hex($nv) - which also works
    for long double NV's on most architectures (but not powerpc).

   ($mantissa, $exponent, $precision) = ld_str2binary($str, $flag);

    Returns a base 2 representation of the long double value
    represented by the string $str.
    If $flag is true, it also prints out additional information during
    calculation.
    $mantissa is the mantissa (significand).
    $exponent is the exponent.
    $precision is the precision (in bits) of the mantissa - trailing
    zero bits are not counted.
    For doubles, use Data::Float's float_hex($str) - which also works
    for long double NV's on most architectures (but not powerpc).

LICENSE ^

   This program is free software; you may redistribute it and/or modify
   it under the same terms as Perl itself.
   Copyright 2013 Sisyphus

AUTHOR ^

   Sisyphus <sisyphus at(@) cpan dot (.) org>
syntax highlighting: