Funkcja log() w Perl

W języku programowania Perl jest wbudowana funkcja log().

Funkcja log() zwraca logarytm naturalny podanej liczby.

Oto przykład:

▶ Run
#!/usr/bin/perl

print log(10);

Program wypisze na ekran 2.30258509299405.

Argumenty

W przypadku, gdy funkcje log() nie zostały przekazane żadne argumenty, to funkcja działa z дефолтной zmiennej $_:

▶ Run
#!/usr/bin/perl

$_ = 3;

print log(); # 1.09861228866811

Standardowe korzystanie z funkcji log() — to jej podać jeden argument.

Jeśli przekazać funkcji log() więcej niż jeden argument, to będzie błąd i wykonywanie kodu zostanie zatrzymane.

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

Podczas próby obliczyć logarytm naturalny od zera będzie błąd:

▶ Run
#!/usr/bin/perl

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

Wartość zwracana

Funkcja log() zawsze zwraca liczbę.

Korzystanie z innych powodów

Funkcja log() zwraca logarytm naturalny, czyli logarytm o podstawie e. Jeśli chcesz obliczyć logarytm na innej podstawie, to można samemu napisać funkcję:

▶ 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

Oficjalna dokumentacja

Oto wynik polecenia 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.

Tematy pokrewne

Inne artykuły