.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" 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 .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' '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 >0, 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. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Math::GSL::CBLAS 3pm" .TH Math::GSL::CBLAS 3pm 2024-03-07 "perl v5.38.2" "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::GSL::CBLAS \- Basic Linear Algebra Subprograms based on C functions .SH SYNOPSIS .IX Header "SYNOPSIS" use Math::GSL::CBLAS qw/:all/; .SH DESCRIPTION .IX Header "DESCRIPTION" Here is a list of all the functions included in this module : .ie n .IP """cblas_sdsdot""" 1 .el .IP \f(CWcblas_sdsdot\fR 1 .IX Item "cblas_sdsdot" .PD 0 .ie n .IP """cblas_dsdot""" 1 .el .IP \f(CWcblas_dsdot\fR 1 .IX Item "cblas_dsdot" .ie n .IP """cblas_sdot""" 1 .el .IP \f(CWcblas_sdot\fR 1 .IX Item "cblas_sdot" .ie n .IP """cblas_ddot""" 1 .el .IP \f(CWcblas_ddot\fR 1 .IX Item "cblas_ddot" .ie n .IP """cblas_cdotu_sub""" 1 .el .IP \f(CWcblas_cdotu_sub\fR 1 .IX Item "cblas_cdotu_sub" .ie n .IP """cblas_cdotc_sub""" 1 .el .IP \f(CWcblas_cdotc_sub\fR 1 .IX Item "cblas_cdotc_sub" .ie n .IP """cblas_zdotu_sub""" 1 .el .IP \f(CWcblas_zdotu_sub\fR 1 .IX Item "cblas_zdotu_sub" .ie n .IP """cblas_zdotc_sub""" 1 .el .IP \f(CWcblas_zdotc_sub\fR 1 .IX Item "cblas_zdotc_sub" .ie n .IP """cblas_snrm2""" 1 .el .IP \f(CWcblas_snrm2\fR 1 .IX Item "cblas_snrm2" .ie n .IP """cblas_sasum""" 1 .el .IP \f(CWcblas_sasum\fR 1 .IX Item "cblas_sasum" .ie n .IP """cblas_dnrm2""" 1 .el .IP \f(CWcblas_dnrm2\fR 1 .IX Item "cblas_dnrm2" .ie n .IP """cblas_dasum""" 1 .el .IP \f(CWcblas_dasum\fR 1 .IX Item "cblas_dasum" .ie n .IP """cblas_scnrm2""" 1 .el .IP \f(CWcblas_scnrm2\fR 1 .IX Item "cblas_scnrm2" .ie n .IP """cblas_scasum""" 1 .el .IP \f(CWcblas_scasum\fR 1 .IX Item "cblas_scasum" .ie n .IP """cblas_dznrm2""" 1 .el .IP \f(CWcblas_dznrm2\fR 1 .IX Item "cblas_dznrm2" .ie n .IP """cblas_dzasum""" 1 .el .IP \f(CWcblas_dzasum\fR 1 .IX Item "cblas_dzasum" .ie n .IP """cblas_isamax""" 1 .el .IP \f(CWcblas_isamax\fR 1 .IX Item "cblas_isamax" .ie n .IP """cblas_idamax""" 1 .el .IP \f(CWcblas_idamax\fR 1 .IX Item "cblas_idamax" .ie n .IP """cblas_icamax""" 1 .el .IP \f(CWcblas_icamax\fR 1 .IX Item "cblas_icamax" .ie n .IP """cblas_izamax""" 1 .el .IP \f(CWcblas_izamax\fR 1 .IX Item "cblas_izamax" .ie n .IP """cblas_sswap""" 1 .el .IP \f(CWcblas_sswap\fR 1 .IX Item "cblas_sswap" .ie n .IP """cblas_scopy""" 1 .el .IP \f(CWcblas_scopy\fR 1 .IX Item "cblas_scopy" .ie n .IP """cblas_saxpy""" 1 .el .IP \f(CWcblas_saxpy\fR 1 .IX Item "cblas_saxpy" .ie n .IP """cblas_dswap""" 1 .el .IP \f(CWcblas_dswap\fR 1 .IX Item "cblas_dswap" .ie n .IP """cblas_dcopy""" 1 .el .IP \f(CWcblas_dcopy\fR 1 .IX Item "cblas_dcopy" .ie n .IP """cblas_daxpy""" 1 .el .IP \f(CWcblas_daxpy\fR 1 .IX Item "cblas_daxpy" .ie n .IP """cblas_cswap""" 1 .el .IP \f(CWcblas_cswap\fR 1 .IX Item "cblas_cswap" .ie n .IP """cblas_ccopy""" 1 .el .IP \f(CWcblas_ccopy\fR 1 .IX Item "cblas_ccopy" .ie n .IP """cblas_caxpy""" 1 .el .IP \f(CWcblas_caxpy\fR 1 .IX Item "cblas_caxpy" .ie n .IP """cblas_zswap""" 1 .el .IP \f(CWcblas_zswap\fR 1 .IX Item "cblas_zswap" .ie n .IP """cblas_zcopy""" 1 .el .IP \f(CWcblas_zcopy\fR 1 .IX Item "cblas_zcopy" .ie n .IP """cblas_zaxpy""" 1 .el .IP \f(CWcblas_zaxpy\fR 1 .IX Item "cblas_zaxpy" .ie n .IP """cblas_srotg""" 1 .el .IP \f(CWcblas_srotg\fR 1 .IX Item "cblas_srotg" .ie n .IP """cblas_srotmg""" 1 .el .IP \f(CWcblas_srotmg\fR 1 .IX Item "cblas_srotmg" .ie n .IP """cblas_srot""" 1 .el .IP \f(CWcblas_srot\fR 1 .IX Item "cblas_srot" .ie n .IP """cblas_srotm""" 1 .el .IP \f(CWcblas_srotm\fR 1 .IX Item "cblas_srotm" .ie n .IP """cblas_drotg""" 1 .el .IP \f(CWcblas_drotg\fR 1 .IX Item "cblas_drotg" .ie n .IP """cblas_drotmg""" 1 .el .IP \f(CWcblas_drotmg\fR 1 .IX Item "cblas_drotmg" .ie n .IP """cblas_drot""" 1 .el .IP \f(CWcblas_drot\fR 1 .IX Item "cblas_drot" .ie n .IP """cblas_drotm""" 1 .el .IP \f(CWcblas_drotm\fR 1 .IX Item "cblas_drotm" .ie n .IP """cblas_sscal""" 1 .el .IP \f(CWcblas_sscal\fR 1 .IX Item "cblas_sscal" .ie n .IP """cblas_dscal""" 1 .el .IP \f(CWcblas_dscal\fR 1 .IX Item "cblas_dscal" .ie n .IP """cblas_cscal""" 1 .el .IP \f(CWcblas_cscal\fR 1 .IX Item "cblas_cscal" .ie n .IP """cblas_zscal""" 1 .el .IP \f(CWcblas_zscal\fR 1 .IX Item "cblas_zscal" .ie n .IP """cblas_csscal""" 1 .el .IP \f(CWcblas_csscal\fR 1 .IX Item "cblas_csscal" .ie n .IP """cblas_zdscal""" 1 .el .IP \f(CWcblas_zdscal\fR 1 .IX Item "cblas_zdscal" .ie n .IP """cblas_sgemv""" 1 .el .IP \f(CWcblas_sgemv\fR 1 .IX Item "cblas_sgemv" .ie n .IP """cblas_sgbmv""" 1 .el .IP \f(CWcblas_sgbmv\fR 1 .IX Item "cblas_sgbmv" .ie n .IP """cblas_strmv""" 1 .el .IP \f(CWcblas_strmv\fR 1 .IX Item "cblas_strmv" .ie n .IP """cblas_stbmv""" 1 .el .IP \f(CWcblas_stbmv\fR 1 .IX Item "cblas_stbmv" .ie n .IP """cblas_stpmv""" 1 .el .IP \f(CWcblas_stpmv\fR 1 .IX Item "cblas_stpmv" .ie n .IP """cblas_strsv""" 1 .el .IP \f(CWcblas_strsv\fR 1 .IX Item "cblas_strsv" .ie n .IP """cblas_stbsv""" 1 .el .IP \f(CWcblas_stbsv\fR 1 .IX Item "cblas_stbsv" .ie n .IP """cblas_stpsv""" 1 .el .IP \f(CWcblas_stpsv\fR 1 .IX Item "cblas_stpsv" .ie n .IP """cblas_dgemv""" 1 .el .IP \f(CWcblas_dgemv\fR 1 .IX Item "cblas_dgemv" .ie n .IP """cblas_dgbmv""" 1 .el .IP \f(CWcblas_dgbmv\fR 1 .IX Item "cblas_dgbmv" .ie n .IP """cblas_dtrmv""" 1 .el .IP \f(CWcblas_dtrmv\fR 1 .IX Item "cblas_dtrmv" .ie n .IP """cblas_dtbmv""" 1 .el .IP \f(CWcblas_dtbmv\fR 1 .IX Item "cblas_dtbmv" .ie n .IP """cblas_dtpmv""" 1 .el .IP \f(CWcblas_dtpmv\fR 1 .IX Item "cblas_dtpmv" .ie n .IP """cblas_dtrsv""" 1 .el .IP \f(CWcblas_dtrsv\fR 1 .IX Item "cblas_dtrsv" .ie n .IP """cblas_dtbsv""" 1 .el .IP \f(CWcblas_dtbsv\fR 1 .IX Item "cblas_dtbsv" .ie n .IP """cblas_dtpsv""" 1 .el .IP \f(CWcblas_dtpsv\fR 1 .IX Item "cblas_dtpsv" .ie n .IP """cblas_cgemv""" 1 .el .IP \f(CWcblas_cgemv\fR 1 .IX Item "cblas_cgemv" .ie n .IP """cblas_cgbmv""" 1 .el .IP \f(CWcblas_cgbmv\fR 1 .IX Item "cblas_cgbmv" .ie n .IP """cblas_ctrmv""" 1 .el .IP \f(CWcblas_ctrmv\fR 1 .IX Item "cblas_ctrmv" .ie n .IP """cblas_ctbmv""" 1 .el .IP \f(CWcblas_ctbmv\fR 1 .IX Item "cblas_ctbmv" .ie n .IP """cblas_ctpmv""" 1 .el .IP \f(CWcblas_ctpmv\fR 1 .IX Item "cblas_ctpmv" .ie n .IP """cblas_ctrsv""" 1 .el .IP \f(CWcblas_ctrsv\fR 1 .IX Item "cblas_ctrsv" .ie n .IP """cblas_ctbsv""" 1 .el .IP \f(CWcblas_ctbsv\fR 1 .IX Item "cblas_ctbsv" .ie n .IP """cblas_ctpsv""" 1 .el .IP \f(CWcblas_ctpsv\fR 1 .IX Item "cblas_ctpsv" .ie n .IP """cblas_zgemv""" 1 .el .IP \f(CWcblas_zgemv\fR 1 .IX Item "cblas_zgemv" .ie n .IP """cblas_zgbmv""" 1 .el .IP \f(CWcblas_zgbmv\fR 1 .IX Item "cblas_zgbmv" .ie n .IP """cblas_ztrmv""" 1 .el .IP \f(CWcblas_ztrmv\fR 1 .IX Item "cblas_ztrmv" .ie n .IP """cblas_ztbmv""" 1 .el .IP \f(CWcblas_ztbmv\fR 1 .IX Item "cblas_ztbmv" .ie n .IP """cblas_ztpmv""" 1 .el .IP \f(CWcblas_ztpmv\fR 1 .IX Item "cblas_ztpmv" .ie n .IP """cblas_ztrsv""" 1 .el .IP \f(CWcblas_ztrsv\fR 1 .IX Item "cblas_ztrsv" .ie n .IP """cblas_ztbsv""" 1 .el .IP \f(CWcblas_ztbsv\fR 1 .IX Item "cblas_ztbsv" .ie n .IP """cblas_ztpsv""" 1 .el .IP \f(CWcblas_ztpsv\fR 1 .IX Item "cblas_ztpsv" .ie n .IP """cblas_ssymv""" 1 .el .IP \f(CWcblas_ssymv\fR 1 .IX Item "cblas_ssymv" .ie n .IP """cblas_ssbmv""" 1 .el .IP \f(CWcblas_ssbmv\fR 1 .IX Item "cblas_ssbmv" .ie n .IP """cblas_sspmv""" 1 .el .IP \f(CWcblas_sspmv\fR 1 .IX Item "cblas_sspmv" .ie n .IP """cblas_sger""" 1 .el .IP \f(CWcblas_sger\fR 1 .IX Item "cblas_sger" .ie n .IP """cblas_ssyr""" 1 .el .IP \f(CWcblas_ssyr\fR 1 .IX Item "cblas_ssyr" .ie n .IP """cblas_sspr""" 1 .el .IP \f(CWcblas_sspr\fR 1 .IX Item "cblas_sspr" .ie n .IP """cblas_ssyr2""" 1 .el .IP \f(CWcblas_ssyr2\fR 1 .IX Item "cblas_ssyr2" .ie n .IP """cblas_sspr2""" 1 .el .IP \f(CWcblas_sspr2\fR 1 .IX Item "cblas_sspr2" .ie n .IP """cblas_dsymv""" 1 .el .IP \f(CWcblas_dsymv\fR 1 .IX Item "cblas_dsymv" .ie n .IP """cblas_dsbmv""" 1 .el .IP \f(CWcblas_dsbmv\fR 1 .IX Item "cblas_dsbmv" .ie n .IP """cblas_dspmv""" 1 .el .IP \f(CWcblas_dspmv\fR 1 .IX Item "cblas_dspmv" .ie n .IP """cblas_dger""" 1 .el .IP \f(CWcblas_dger\fR 1 .IX Item "cblas_dger" .ie n .IP """cblas_dsyr""" 1 .el .IP \f(CWcblas_dsyr\fR 1 .IX Item "cblas_dsyr" .ie n .IP """cblas_dspr""" 1 .el .IP \f(CWcblas_dspr\fR 1 .IX Item "cblas_dspr" .ie n .IP """cblas_dsyr2""" 1 .el .IP \f(CWcblas_dsyr2\fR 1 .IX Item "cblas_dsyr2" .ie n .IP """cblas_dspr2""" 1 .el .IP \f(CWcblas_dspr2\fR 1 .IX Item "cblas_dspr2" .ie n .IP """cblas_chemv""" 1 .el .IP \f(CWcblas_chemv\fR 1 .IX Item "cblas_chemv" .ie n .IP """cblas_chbmv""" 1 .el .IP \f(CWcblas_chbmv\fR 1 .IX Item "cblas_chbmv" .ie n .IP """cblas_chpmv""" 1 .el .IP \f(CWcblas_chpmv\fR 1 .IX Item "cblas_chpmv" .ie n .IP """cblas_cgeru""" 1 .el .IP \f(CWcblas_cgeru\fR 1 .IX Item "cblas_cgeru" .ie n .IP """cblas_cgerc""" 1 .el .IP \f(CWcblas_cgerc\fR 1 .IX Item "cblas_cgerc" .ie n .IP """cblas_cher""" 1 .el .IP \f(CWcblas_cher\fR 1 .IX Item "cblas_cher" .ie n .IP """cblas_chpr""" 1 .el .IP \f(CWcblas_chpr\fR 1 .IX Item "cblas_chpr" .ie n .IP """cblas_cher2""" 1 .el .IP \f(CWcblas_cher2\fR 1 .IX Item "cblas_cher2" .ie n .IP """cblas_chpr2""" 1 .el .IP \f(CWcblas_chpr2\fR 1 .IX Item "cblas_chpr2" .ie n .IP """cblas_zhemv""" 1 .el .IP \f(CWcblas_zhemv\fR 1 .IX Item "cblas_zhemv" .ie n .IP """cblas_zhbmv""" 1 .el .IP \f(CWcblas_zhbmv\fR 1 .IX Item "cblas_zhbmv" .ie n .IP """cblas_zhpmv""" 1 .el .IP \f(CWcblas_zhpmv\fR 1 .IX Item "cblas_zhpmv" .ie n .IP """cblas_zgeru""" 1 .el .IP \f(CWcblas_zgeru\fR 1 .IX Item "cblas_zgeru" .ie n .IP """cblas_zgerc""" 1 .el .IP \f(CWcblas_zgerc\fR 1 .IX Item "cblas_zgerc" .ie n .IP """cblas_zher""" 1 .el .IP \f(CWcblas_zher\fR 1 .IX Item "cblas_zher" .ie n .IP """cblas_zhpr""" 1 .el .IP \f(CWcblas_zhpr\fR 1 .IX Item "cblas_zhpr" .ie n .IP """cblas_zher2""" 1 .el .IP \f(CWcblas_zher2\fR 1 .IX Item "cblas_zher2" .ie n .IP """cblas_zhpr2""" 1 .el .IP \f(CWcblas_zhpr2\fR 1 .IX Item "cblas_zhpr2" .ie n .IP """cblas_sgemm""" 1 .el .IP \f(CWcblas_sgemm\fR 1 .IX Item "cblas_sgemm" .ie n .IP """cblas_ssymm""" 1 .el .IP \f(CWcblas_ssymm\fR 1 .IX Item "cblas_ssymm" .ie n .IP """cblas_ssyrk""" 1 .el .IP \f(CWcblas_ssyrk\fR 1 .IX Item "cblas_ssyrk" .ie n .IP """cblas_ssyr2k""" 1 .el .IP \f(CWcblas_ssyr2k\fR 1 .IX Item "cblas_ssyr2k" .ie n .IP """cblas_strmm""" 1 .el .IP \f(CWcblas_strmm\fR 1 .IX Item "cblas_strmm" .ie n .IP """cblas_strsm""" 1 .el .IP \f(CWcblas_strsm\fR 1 .IX Item "cblas_strsm" .ie n .IP """cblas_dgemm""" 1 .el .IP \f(CWcblas_dgemm\fR 1 .IX Item "cblas_dgemm" .ie n .IP """cblas_dsymm""" 1 .el .IP \f(CWcblas_dsymm\fR 1 .IX Item "cblas_dsymm" .ie n .IP """cblas_dsyrk""" 1 .el .IP \f(CWcblas_dsyrk\fR 1 .IX Item "cblas_dsyrk" .ie n .IP """cblas_dsyr2k""" 1 .el .IP \f(CWcblas_dsyr2k\fR 1 .IX Item "cblas_dsyr2k" .ie n .IP """cblas_dtrmm""" 1 .el .IP \f(CWcblas_dtrmm\fR 1 .IX Item "cblas_dtrmm" .ie n .IP """cblas_dtrsm""" 1 .el .IP \f(CWcblas_dtrsm\fR 1 .IX Item "cblas_dtrsm" .ie n .IP """cblas_cgemm""" 1 .el .IP \f(CWcblas_cgemm\fR 1 .IX Item "cblas_cgemm" .ie n .IP """cblas_csymm""" 1 .el .IP \f(CWcblas_csymm\fR 1 .IX Item "cblas_csymm" .ie n .IP """cblas_csyrk""" 1 .el .IP \f(CWcblas_csyrk\fR 1 .IX Item "cblas_csyrk" .ie n .IP """cblas_csyr2k""" 1 .el .IP \f(CWcblas_csyr2k\fR 1 .IX Item "cblas_csyr2k" .ie n .IP """cblas_ctrmm""" 1 .el .IP \f(CWcblas_ctrmm\fR 1 .IX Item "cblas_ctrmm" .ie n .IP """cblas_ctrsm""" 1 .el .IP \f(CWcblas_ctrsm\fR 1 .IX Item "cblas_ctrsm" .ie n .IP """cblas_zgemm""" 1 .el .IP \f(CWcblas_zgemm\fR 1 .IX Item "cblas_zgemm" .ie n .IP """cblas_zsymm""" 1 .el .IP \f(CWcblas_zsymm\fR 1 .IX Item "cblas_zsymm" .ie n .IP """cblas_zsyrk""" 1 .el .IP \f(CWcblas_zsyrk\fR 1 .IX Item "cblas_zsyrk" .ie n .IP """cblas_zsyr2k""" 1 .el .IP \f(CWcblas_zsyr2k\fR 1 .IX Item "cblas_zsyr2k" .ie n .IP """cblas_ztrmm""" 1 .el .IP \f(CWcblas_ztrmm\fR 1 .IX Item "cblas_ztrmm" .ie n .IP """cblas_ztrsm""" 1 .el .IP \f(CWcblas_ztrsm\fR 1 .IX Item "cblas_ztrsm" .ie n .IP """cblas_chemm""" 1 .el .IP \f(CWcblas_chemm\fR 1 .IX Item "cblas_chemm" .ie n .IP """cblas_cherk""" 1 .el .IP \f(CWcblas_cherk\fR 1 .IX Item "cblas_cherk" .ie n .IP """cblas_cher2k""" 1 .el .IP \f(CWcblas_cher2k\fR 1 .IX Item "cblas_cher2k" .ie n .IP """cblas_zhemm""" 1 .el .IP \f(CWcblas_zhemm\fR 1 .IX Item "cblas_zhemm" .ie n .IP """cblas_zherk""" 1 .el .IP \f(CWcblas_zherk\fR 1 .IX Item "cblas_zherk" .ie n .IP """cblas_zher2k""" 1 .el .IP \f(CWcblas_zher2k\fR 1 .IX Item "cblas_zher2k" .ie n .IP """cblas_xerbla""" 1 .el .IP \f(CWcblas_xerbla\fR 1 .IX Item "cblas_xerbla" .PD .PP This module also contains the following constants : .ie n .IP $CblasRowMajor 1 .el .IP \f(CW$CblasRowMajor\fR 1 .IX Item "$CblasRowMajor" .PD 0 .ie n .IP $CblasColMajor 1 .el .IP \f(CW$CblasColMajor\fR 1 .IX Item "$CblasColMajor" .ie n .IP "$CblasNoTrans " 1 .el .IP "\f(CW$CblasNoTrans \fR" 1 .IX Item "$CblasNoTrans " .ie n .IP "$CblasTrans " 1 .el .IP "\f(CW$CblasTrans \fR" 1 .IX Item "$CblasTrans " .ie n .IP "$CblasConjTrans " 1 .el .IP "\f(CW$CblasConjTrans \fR" 1 .IX Item "$CblasConjTrans " .ie n .IP $CblasUpper 1 .el .IP \f(CW$CblasUpper\fR 1 .IX Item "$CblasUpper" .ie n .IP $CblasLower 1 .el .IP \f(CW$CblasLower\fR 1 .IX Item "$CblasLower" .ie n .IP $CblasNonUnit 1 .el .IP \f(CW$CblasNonUnit\fR 1 .IX Item "$CblasNonUnit" .ie n .IP "$CblasUnit " 1 .el .IP "\f(CW$CblasUnit \fR" 1 .IX Item "$CblasUnit " .ie n .IP "$CblasLeft " 1 .el .IP "\f(CW$CblasLeft \fR" 1 .IX Item "$CblasLeft " .ie n .IP "$CblasRight " 1 .el .IP "\f(CW$CblasRight \fR" 1 .IX Item "$CblasRight " .PD .PP For more information on the functions, we refer you to the GSL official documentation: .SH EXAMPLES .IX Header "EXAMPLES" .SH AUTHORS .IX Header "AUTHORS" Jonathan "Duke" Leto and Thierry Moisan .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2008\-2023 Jonathan "Duke" Leto and Thierry Moisan .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.