File Coverage

lib/Spreadsheet/Engine/Function/PMT.pm
Criterion Covered Total %
statement 15 15 100.0
branch 4 4 100.0
condition 2 2 100.0
subroutine 5 5 100.0
pod 2 2 100.0
total 28 28 100.0


line stmt bran cond sub pod time code
1             package Spreadsheet::Engine::Function::PMT;
2              
3 28     28   150 use strict;
  28         65  
  28         883  
4 28     28   147 use warnings;
  28         59  
  28         821  
5              
6 28     28   154 use base 'Spreadsheet::Engine::Fn::investment';
  28         55  
  28         6952  
7              
8 55     55 1 301 sub signature { 'n', '!=0', 'n', 'n', 'n' }
9              
10             sub calculate {
11 54     54 1 2109 my ($self, $rate, $n, $pv, $fv, $type) = @_;
12 54   100     209 $fv ||= 0;
13 54 100       321 $type = $type ? 1 : 0;
14              
15 54 100       520 return ($fv - $pv) / $n if $rate == 0;
16 42         1227 return (0 - $fv - $pv * (1 + $rate)**$n) /
17             ((1 + $rate * $type) * ((1 + $rate)**$n - 1) / $rate);
18             }
19              
20             1;
21              
22             __END__