/usr/share/perl5/PDF/API2/Matrix.pm is in libpdf-api2-perl 2.033-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #=======================================================================
#
# PDF::API2::Matrix
# Original Copyright 1995-96 Ulrich Pfeifer.
# modified by Alfred Reibenschuh <areibens@cpan.org> for PDF::API2
#
# This library is free software; you can redistribute it
# and/or modify it under the same terms as Perl itself.
#
#=======================================================================
package PDF::API2::Matrix;
use strict;
our $VERSION = '2.033'; # VERSION
sub new {
my $type = shift;
my $self = [];
my $len = scalar(@{$_[0]});
for (@_) {
return if scalar(@{$_}) != $len;
push(@{$self}, [@{$_}]);
}
bless $self, $type;
}
sub transpose {
my $self = shift;
my @result;
my $m;
for my $col (@{$self->[0]}) {
push @result, [];
}
for my $row (@{$self}) {
$m = 0;
for my $col (@{$row}) {
push(@{$result[$m++]}, $col);
}
}
return PDF::API2::Matrix->new(@result);
}
sub vekpro {
my ($a, $b) = @_;
my $result = 0;
for my $i (0 .. $#{$a}) {
$result += $a->[$i] * $b->[$i];
}
return $result;
}
sub multiply {
my $self = shift;
my $other = shift->transpose;
my @result;
my $m;
return if $#{$self->[0]} != $#{$other->[0]};
for my $row (@{$self}) {
my $rescol = [];
for my $col (@{$other}) {
push(@{$rescol}, vekpro($row,$col));
}
push(@result, $rescol);
}
return PDF::API2::Matrix->new(@result);
}
1;
|