#!/usr/bin/perl

sub kowariancja {
    my ($element_tablicy1, $element_tablicy2) = @_;
    my ($i, $wynik);
    for ($i = 0; $i < @$element_tablicy1; $i++) {
        $wynik += $element_tablicy1->[$i] * $element_tablicy2->[$i];
    }
    $wynik /= @$element_tablicy1;
    $wynik -= srednia($element_tablicy1) * srednia($element_tablicy2);
}

sub korelacja {
    my ($element_tablicy1, $element_tablicy2) = @_;
    my ($suma1, $suma2);
    my ($kwadrat_sumy1, $kwadrat_sumy2);
    foreach (@$element_tablicy1) { $suma += $_; $kwadrat_sumy1+= $_ ** 2 }
    foreach (@$element_tablicy2) { $suma2 += $_; $kwadrat_sumy2+= $_ ** 2 }
    return (@$element_tablicy1** 2) * kowariancja($element_tablicy1, $ element_tablicy2) /
        sqrt(((@$element_tablicy1* $kwadrat_sumy1) - ($suma1 ** 2)) *
             ((@$element_tablicy1* $kwadrat_sumy2) - ($suma2 ** 2)));
}

@odslony = (2376, 4024, 9696, 7314, 7710);
@sprzedaz = (310.94, 315.88, 514.15, 500.18, 610.37);

print korelacja(\@odslony, \@sprzedaz), "\n";

# $srednia = srednia(\@tablica) oblicza srednia dla tablicy z wartosciami.
#
sub srednia {
    my ($element) = @_;
    my $wynik;
    foreach (@$element) { $wynik += $_ }
    return $wynik / @$arrayref;
}

