.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Math::SparseVector 3pm" .TH Math::SparseVector 3pm "2008-03-25" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Math::SparseVector \- Supports sparse vector operations such as setting a value in a vector, reading a value at a given index, obtaining all indices, addition and dot product of two sparse vectors, and vector normalization. .SH "MODULE HISTORY" .IX Header "MODULE HISTORY" This module is the successor to Sparse::Vector, which was re-cast into this new namespace in order to introduce another module Math::SparseMatrix, which makes use of this module. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Math::SparseVector; \& \& # creating an empty sparse vector object \& $spvec=Math::SparseVector\->new; \& \& # sets the value at index 12 to 5 \& $spvec\->set(12,5); \& \& # returns value at index 12 \& $value = $spvec\->get(12); \& \& # returns the indices of non\-zero values in sorted order \& @indices = $spvec\->keys; \& \& # returns 1 if the vector is empty and has no keys \& if($spvec\->isnull) { \& print "vector is null.\en"; \& } \& else { \& print "vector is not null.\en"; \& } \& \& # print sparse vector to stdout \& $spvec\->print; \& \& # returns the string form of sparse vector \& # same as print except the string is returned \& # rather than displaying on stdout \& $spvec\->stringify; \& \& # adds sparse vectors v1, v2 and stores \& # result into v1 \& $v1\->add($v2); \& \& # adds binary equivalent of v2 to v1 \& $v1\->binadd($v2); \& # binary equivalnet treats all non\-zero values \& # as 1s \& \& # increments the value at index 12 \& $spvec\->incr(12); \& \& # divides each vector entry by a given divisor 4 \& $spvec\->div(4); \& \& # returns norm of the vector \& $spvec_norm = $spvec\->norm; \& \& # normalizes a sparse vector \& $spvec\->normalize; \& \& # returns dot product of the 2 vectors \& $dotprod = $v1\->dot($v2); \& \& # deallocates all entries \& $spvec\->free; .Ve .SH "USAGE NOTES" .IX Header "USAGE NOTES" .IP "1. Loading Math::SparseVector Module" 4 .IX Item "1. Loading Math::SparseVector Module" To use this module, you must insert the following line in your Perl program before using any of the supported methods. .Sp .Vb 1 \& use Math::SparseVector; .Ve .IP "2. Creating a Math::SparseVector Object" 4 .IX Item "2. Creating a Math::SparseVector Object" The following line creates a new object of Math::SparseVector class referred with the name 'spvec'. .Sp .Vb 1 \& $spvec=Math::SparseVector\->new; .Ve .Sp The newly created 'spvec' vector will be initially empty. .IP "3. Using Methods" 4 .IX Item "3. Using Methods" Now you can use any of the following methods on this 'spvec' Math::SparseVector object. .RS 4 .IP "1. set(i,n) \- Sets the value at index i to n" 4 .IX Item "1. set(i,n) - Sets the value at index i to n" .Vb 2 \& # equivalent to $spvec{12}=5; \& $spvec\->set(12,5); .Ve .IP "2. get(i) \- Returns the value at index i" 4 .IX Item "2. get(i) - Returns the value at index i" .Vb 2 \& # equivalent to $value=$spvec{12}; \& $value = $spvec\->get(12); .Ve .IP "3. \fIkeys()\fR \- Returns the indices of all non-zero values in the vector" 4 .IX Item "3. keys() - Returns the indices of all non-zero values in the vector" .Vb 2 \& # equivalent to @keys=sort {$a <=> $b} keys %spvec; \& @indices = $spvec\->keys; .Ve .IP "4. \fIisnull()\fR \- Returns 1 if the vector is empty and has no keys" 4 .IX Item "4. isnull() - Returns 1 if the vector is empty and has no keys" .Vb 3 \& # similar to \& # if(scalar(keys %spvec)==0) {print "vector is null.\en";} \& if($spvec\->isnull) { print "vector is null.\en"; } .Ve .IP "5. \fIprint()\fR \- Prints the sparse vector to stdout \- Output will show a list of space separated 'index value' pairs for each non-zero 'value' in the vector." 4 .IX Item "5. print() - Prints the sparse vector to stdout - Output will show a list of space separated 'index value' pairs for each non-zero 'value' in the vector." .Vb 4 \& # similar to \& # foreach $ind (sort {$a<=>$b} keys %spvec) \& # { print "$ind " . $spvec{$ind} . " "; } \& $spvec\->print; .Ve .IP "6. \fIstringify()\fR \- Returns the vector in a string form. Same as \fIprint()\fR method except the vector is written to a string that is returned instead of displaying onto stdout" 4 .IX Item "6. stringify() - Returns the vector in a string form. Same as print() method except the vector is written to a string that is returned instead of displaying onto stdout" .Vb 3 \& # the below will do exactly same as $spvec\->print; \& $string=$spvec\->stringify; \& print "$string\en"; .Ve .IP "7. v1\->add(v2) \- Adds contents of v2 to vector v1." 4 .IX Item "7. v1->add(v2) - Adds contents of v2 to vector v1." .Vb 1 \& Similar to v1+=v2 \& \& $v1\->add($v2); \& If v1 = (2, , , 5, 8, , , , 1) \& & v2 = ( , 1, , 3, , , 5, , 9) \& where blanks show the 0 values that are not stored in \& Math::SparseVector. \& \& After $v1\->add($v2); \& v1 = (2, 1, , 8, 8, , 5, , 10) and v2 remains same .Ve .IP "8. v1\->binadd(v2) \- Binary equivalent of v2 is added into v1. Binary equivalent of a vector is obtained by setting all non-zero values to 1s." 4 .IX Item "8. v1->binadd(v2) - Binary equivalent of v2 is added into v1. Binary equivalent of a vector is obtained by setting all non-zero values to 1s." .Vb 4 \& If v1 = (1, , , 1, 1, , , , 1) \& & v2 = ( , 1, , 1, , , 1, , 1) \& Then, after v1\->binadd(v2), \& v1 will be (1, 1, , 1, 1, , 1, , 1). \& \& If v1 = (1, , , 1, 1, , , , 1) \& & v2 = ( , 1, , 3, , , 5, , 9) \& v1\->binadd(v2); \& will set v1 to (1, 1, , 1, 1, , 1, , 1). .Ve .IP "9. incr(i) \- Increments the value at index i" 4 .IX Item "9. incr(i) - Increments the value at index i" .Vb 2 \& # is similar to $spvec{12}++; \& $spvec\->incr(12); .Ve .IP "10. div(n) \- Divides each vector entry by a given divisor n" 4 .IX Item "10. div(n) - Divides each vector entry by a given divisor n" .Vb 4 \& $spvec\->div(4); \& If spvec = (2, , , 5, 8, , , , 1) \& Then, $spvec\->div(4) \& will set spvec to (0.5, , , 1.25, 2, , , , 0.25) .Ve .IP "11. \fInorm()\fR \- Returns the norm of a given vector" 4 .IX Item "11. norm() - Returns the norm of a given vector" .Vb 6 \& $spvec_norm = $spvec\->norm; \& If spvec = (2, , , 5, 8, , , , 1) \& $spvec\->norm will return the value \& = sqrt(2^2 + 5^2 + 8^2 + 1) \& = sqrt(4 + 25 + 64 + 1) \& = 9.69536 .Ve .IP "12. v1\->dot(v2) \- Returns the dot product of two vectors" 4 .IX Item "12. v1->dot(v2) - Returns the dot product of two vectors" .Vb 5 \& $dotprod = $v1\->dot($v2); \& If v1 = (2, , , 5, 8, , , , 1) \& & v2 = ( , 1, , 3, , , 5, , 9) \& v1\->dot(v2) returns \& 5*3 + 1*9 = 15 + 9 = 24 .Ve .IP "13. \fIfree()\fR \- Deallocates all entries and makes the vector empty" 4 .IX Item "13. free() - Deallocates all entries and makes the vector empty" .Vb 2 \& $spvec\->free; \& will set spvec to null vector () .Ve .RE .RS 4 .RE .SH "AUTHORS" .IX Header "AUTHORS" Amruta Purandare, University of Pittsburgh amruta at cs.pitt.edu .PP Ted Pedersen, University of Minnesota, Duluth tpederse at d.umn.edu .PP Mahesh Joshi, Carnegie-Mellon University maheshj at cmu.edu .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (c) 2006\-2008, Amruta Purandare, Ted Pedersen, Mahesh Joshi .PP This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \&\s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \&\s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \s-1GNU\s0 General Public License for more details. .PP You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, write to .PP .Vb 3 \& The Free Software Foundation, Inc., \& 59 Temple Place \- Suite 330, \& Boston, MA 02111\-1307, USA. .Ve .SH "POD ERRORS" .IX Header "POD ERRORS" Hey! \fBThe above document had some coding errors, which are explained below:\fR .IP "Around line 464:" 4 .IX Item "Around line 464:" =back doesn't take any parameters, but you said =back =back .IP "Around line 467:" 4 .IX Item "Around line 467:" You forgot a '=back' before '=head1'