File Coverage

lib/Spreadsheet/Engine/Function/VAR.pm
Criterion Covered Total %
statement 21 21 100.0
branch 4 4 100.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 33 33 100.0


line stmt bran cond sub pod time code
1             package Spreadsheet::Engine::Function::VAR;
2              
3 28     28   167 use strict;
  28         58  
  28         935  
4 28     28   186 use warnings;
  28         76  
  28         721  
5              
6 28     28   148 use base 'Spreadsheet::Engine::Fn::series';
  28         54  
  28         11353  
7              
8             sub calculate {
9             return sub {
10 362     362   663 my ($in, $A) = @_;
11 362 100       3515 return $A = { mk1 => $in->value, sk1 => 0, count => 1 }
12             unless defined $A;
13              
14 221         4950 my $diff = $in->value - $A->{mk1};
15 221         2167 $A->{mk} = $A->{mk1} + $diff / ++$A->{count};
16 221         4818 $A->{sk} = $A->{sk1} + $diff * ($in->value - $A->{mk});
17 221         2011 $A->{sk1} = $A->{sk};
18 221         568 $A->{mk1} = $A->{mk};
19 221         516 return $A;
20 141     141 1 1334 };
21             }
22              
23             sub result_from {
24 84     84 1 143 my ($self, $A) = @_;
25 84 100       263 die Spreadsheet::Engine::Error->div0 unless $A->{count} > 1;
26 79         475 return $A->{sk} / ($A->{count} - 1);
27             }
28              
29             1;
30              
31             __END__