Mark Overmeer >
POSIX-1003-0.13 >
POSIX::1003::Math

Module Version: 0.13
POSIX::1003::Math - POSIX handling time

POSIX::1003::Math is a POSIX::1003

use POSIX::1003::Math qw/ceil floor sqrt/; print ceil 3.14; print sqrt floor 4.9;

**Be aware** that math in Perl has unclear precission! Be aware that the math library often provides many variations of these functions... it is hard to determine which one is used. Probably, Math::Trig will serve you better. Or PDL for real number crunchers.

**Be warned** that these functions do not have an obligatory scalar parameter, but only an optional parameter (defaults to `$_`

). This means that they have the lowest (is list) priority.

Like the built-in sin, cos, and sqrt, the EXPR defaults to `$_`

and there is a scalar context (missing from POSIX.pm).

**acos**(EXPR)**asin**(EXPR)**atan**(EXPR)**ceil**(EXPR)**cosh**(EXPR)**div**(NUMER, DENOM)-
Devide NUMER by DENOminator. The result is a list of two: quotient and remainder. Implemented in Perl for completeness, currently not with the speed of XS.

my ($quotient, $remainder) = div($number, $denom);

**floor**(EXPR)**fmod**(EXPR, EXPR)**frexp**(EXPR)**ldexp**(EXPR)**log10**(EXPR)**modf**(EXPR, EXPR)**pow**(EXPR1, EXPR2)-
Returns

`EXPR1 ** EXPR2`

**rint**(NUMBER)-
Round to the closest integer. Implemented in Perl for completeness.

**sinh**(EXPR)**tan**(EXPR)**tanh**(EXPR)

A small set of mathematical functions are available in Perl CORE, without the need to load this module. But if you do import them, it simply gets ignored.

**abs**([EXPR])**atan2**(EXPR, EXPR)**cos**([EXPR])**exp**([EXPR])**log**([EXPR])**rand**([EXPR])**sin**([EXPR])**sqrt**([EXPR])**srand**([EXPR])

All `strto*`

, `atof`

, `atoi`

and friends functions are usually not needed in Perl programs: the integer and float types are at their largest size, so when a string is used in numeric context it will get converted automatically. Still, POSIX.xs does provide a few of those functions, which are sometimes more accurate in number parsing for large numbers.

All three provided functions treat errors the same way. Truly POSIX-compliant systems set `$ERRNO`

($!) to indicate a translation error, so clear `$!`

before calling strto*. Non-compliant systems may not check for overflow, and therefore will never set `$!`

.

To parse a string `$str`

as a floating point number use

$! = 0; ($num, $n_unparsed) = strtod($str); if($str eq '' || $n_unparsed != 0 || $!) { die "Non-numeric input $str" . ($! ? ": $!\n" : "\n"); } # When you do not care about handling errors, you can do $num = strtod($str); $num = $str + 0; # same: Perl auto-converts

**strtod**(STRING)-
String to double translation. Returns the parsed number and the number of characters in the unparsed portion of the string. When called in a scalar context

`strtod`

returns the parsed number. **strtol**(STRING, BASE)-
String to integer translation. Returns the parsed number and the number of characters in the unparsed portion of the string. When called in a scalar context

`strtol`

returns the parsed number.The base should be zero or between 2 and 36, inclusive. When the base is zero or omitted

`strtol`

will use the string itself to determine the base: a leading "0x" or "0X" means hexadecimal; a leading "0" means octal; any other leading characters mean decimal. Thus, "1234" is parsed as a decimal number, "01234" as an octal number, and "0x1234" as a hexadecimal number. **strtoul**(STRING, BASE)-
String to unsigned integer translation, which behaves like

`strtol`

.

The following constants are exported, shown here with the values discovered during installation of this module:

CHAR_BIT 8 CHAR_MAX 127 CHAR_MIN -128 DBL_DIG 15 DBL_EPSILON 2.22044604925031e-16 DBL_MANT_DIG 53 DBL_MAX 1.79769313486232e+308 DBL_MAX_10_EXP 308 DBL_MAX_EXP 1024 DBL_MIN 2.2250738585072e-308 DBL_MIN_10_EXP -307 DBL_MIN_EXP -1021 FLT_DIG 6 FLT_EPSILON 1.19209289550781e-07 FLT_MANT_DIG 24 FLT_MAX 3.40282346638529e+38 FLT_MAX_10_EXP 38 FLT_MAX_EXP 128 FLT_MIN 1.17549435082229e-38 FLT_MIN_10_EXP -37 FLT_MIN_EXP -125 FLT_RADIX 2 FLT_ROUNDS 1 HUGE_VAL inf INT_MAX 2147483647 INT_MIN -2147483648 LDBL_DIG 18 LDBL_EPSILON undef LDBL_MANT_DIG 64 LDBL_MAX undef LDBL_MAX_10_EXP 4932 LDBL_MAX_EXP 16384 LDBL_MIN undef LDBL_MIN_10_EXP -4931 LDBL_MIN_EXP -16381 LONG_MAX 9223372036854775807 LONG_MIN -9223372036854775808 RAND_MAX 2147483647 SCHAR_MAX 127 SCHAR_MIN -128 SHRT_MAX 32767 SHRT_MIN -32768 UCHAR_MAX 255 UINT_MAX 4294967295 ULONG_MAX 18446744073709551615 USHRT_MAX 65535

This module is part of POSIX-1003 distribution version 0.13, built on July 26, 2012. Website: *http://perl.overmeer.net*. The code is based on POSIX, which is released with Perl itself. See also POSIX::Util for additional functionality.

Copyrights of the perl code and the related documentation by 2011-2012 by [Mark Overmeer]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See *http://www.perl.com/perl/misc/Artistic.html*

syntax highlighting: