/
Ord2Bivariate.pm
54 lines (40 loc) · 978 Bytes
/
Ord2Bivariate.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package App::RecordStream::Aggregator::Ord2Bivariate;
our $VERSION = "4.0.22";
use strict;
use warnings;
use App::RecordStream::Aggregator::MapReduce::FieldSet;
use App::RecordStream::Aggregator;
use base 'App::RecordStream::Aggregator::MapReduce::FieldSet';
#sub new -- passed through
#sub new_from_valuation -- passed through
sub map_fields
{
my ($this, $x, $y) = @_;
return [1,
$x,
$y,
$x * $y,
$x * $x,
$y * $y];
}
sub reduce
{
my ($this, $cookie, $cookie2) = @_;
my ($sum1_1, $sumx_1, $sumy_1, $sumxy_1, $sumx2_1, $sumy2_1) = @$cookie;
my ($sum1_2, $sumx_2, $sumy_2, $sumxy_2, $sumx2_2, $sumy2_2) = @$cookie2;
return [$sum1_1 + $sum1_2,
$sumx_1 + $sumx_2,
$sumy_1 + $sumy_2,
$sumxy_1 + $sumxy_2,
$sumx2_1 + $sumx2_2,
$sumy2_1 + $sumy2_2];
}
sub squish
{
die "Ord2Bivariate subclass doesn't implement squish\n";
}
sub argct
{
return 2;
}
1;