NAME

Math::Utils::XS - Some math utility functions implemented in XS

VERSION

Version 0.000005

SYNOPSIS

use Math::Utils::XS q(utility);

my $l10 = log10(100);              # returns 2
my $l2 = log2(32);                 # returns 5
my $sum = fsum(1, 1e50, 1, -1e50); # returns 2

my $sign = sign(-22);              # returns -1
my $sign = sign(3 - 3);            # returns  0
my $sign = sign(+22);              # returns +1

my $f = floor(22/7);               # returns 3
my $f = floor(2.7182);             # returns 2

my $c = floor(-22/7);              # returns -4
my $c = floor(-2.7182);            # returns -3

FUNCTIONS

Note: functions marked with a (*) simply expose the corresponding function from the C library.

log10 (*)

Compute a number's logarithm in base 10.

log2 (*)

Compute a number's logarithm in base 2.

floor (*)

Compute the largest integer that is less than or equal than a number.

ceil (*)

Compute the smallest integer that is greater than or equal than a number.

sign

Return -1, 0 or +1 depending on whether a number is negative, zero or positive.

fsum

Compute the sum of all arguments. It will process each separate argument, and recurse into any arrays (but not hashes) all the way inside.

The sum is computed in a way that you can safely add floating point numbers, even if their magnitudes are very different. This is done using Neumaier's modification of Kahan's summation algorith, described here: https://en.wikipedia.org/wiki/Kahan_summation_algorithm.

SEE ALSO

https://metacpan.org/pod/Math::Utils

LICENSE

Copyright (C) Gonzalo Diethelm.

This library is free software; you can redistribute it and/or modify it under the terms of the MIT license.

AUTHOR

  • Gonzalo Diethelm gonzus AT cpan DOT org

THANKS