Функция log() в Perl

В языке программирования Perl есть встроенная функция log().

Функция log() возвращает натуральный логарифм от указанного числа.

Вот пример:

▶ Run
#!/usr/bin/perl

print log(10);

Программа выведет на экран 2.30258509299405.

Аргументы

В том случае если функции log() не переданы никакие аргументы, то функция работает с дефолтной переменной $_:

▶ Run
#!/usr/bin/perl

$_ = 3;

print log(); # 1.09861228866811

Стандартное использование функции log() — это передать ей один аргумент.

Если передать функции log() больше чем один аргумент, то будет ошибка и выполнение кода будет остановлено.

Too many arguments for log at script.pl line 3, near "2)"
Execution of script.pl aborted due to compilation errors.

При попытке вычислить натуральный логарифм от нуля будет ошибка:

▶ Run
#!/usr/bin/perl

log(0);
Can't take log of 0 at script.pl line 3.

Возвращаемое значение

Функция log() всегда возвращает число.

Использование других оснований

Функция log() возвращает натуральный логарифм, т.е. логарифм по основанию e. Если необходимо вычислить логарифм по другому основанию, то можно самостоятельно написать функцию:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

sub log_base {
    my ($base, $n) = @_;

    return log($n)/log($base);
};

say log_base(2, 4); # 2
say log_base(2, 256); # 8
say log_base(10, 1000); # 3

Официальная документация

Вот вывод команды perldoc -f log:

    log EXPR
    log     Returns the natural logarithm (base *e*) of EXPR. If EXPR is
            omitted, returns the log of $_. To get the log of another base,
            use basic algebra: The base-N log of a number is equal to the
            natural log of that number divided by the natural log of N. For
            example:

                sub log10 {
                    my $n = shift;
                    return log($n)/log(10);
                }

            See also "exp" for the inverse operation.

Связанные темы

Другие статьи