PDL::LinearAlgebra::Real

PDL::LinearAlgebra::Real is a PDL interface to the real lapack linear algebra programming library.
Download

PDL::LinearAlgebra::Real Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Grgory Vanuxem
  • Publisher web site:
  • http://search.cpan.org/~ellipse/PDL-LinearAlgebra-0.06/Real/real.pd

PDL::LinearAlgebra::Real Tags


PDL::LinearAlgebra::Real Description

PDL::LinearAlgebra::Real is a PDL interface to the real lapack linear algebra programming library. PDL::LinearAlgebra::Real is a PDL interface to the real lapack linear algebra programming library.SYNOPSIS use PDL::LinearAlgebra::Real; $a = random (100,100); $s = zeroes(100); $u = zeroes(100,100); $v = zeroes(100,100); $info = 0; $job = 0; gesdd($a, $job, $info, $s , $u, $v);Blas vector routine use increment.This module provides an interface to parts of the real lapack library. These routines accept either float or double piddles.EODpp_def("gesvd", HandleBad => 0, RedoDimsCode => '$SIZE(r) = $PDL(A)->ndims > 1 ? min($PDL(A)->dims, $PDL(A)->dims) : 1;', Pars => 'A(m,n); int jobu(); int jobvt(); s(r); U(p,q); VT(s,t); int info()', GenericTypes => , Code => generate_code ' types(F) %{ extern int sgesvd_(char *jobu, char *jobvt, integer *m, integer *n, float *a, integer *lda, float *s, float *u, int *ldu, float *vt, integer *ldvt, float *work, integer *lwork, integer *info); float tmp_work; %} types(D) %{ extern int dgesvd_(char *jobz,char *jobvt, integer *m, integer *n, double *a, integer *lda, double *s, double *u, int *ldu, double *vt, integer *ldvt, double *work, integer *lwork, integer *info); double tmp_work; %} integer lwork = -1; char trau, travt; switch ($jobu()) { case 1: trau = 'A'; break; case 2: trau = 'S'; break; case 3: trau = 'O'; break; default: trau = 'N'; } switch ($jobvt()) { case 1: travt = 'A'; break; case 2: travt = 'S'; break; case 3: travt = 'O'; break; default: travt = 'N'; } $TFD(sgesvd_,dgesvd_)( &trau, &travt, &$PRIV(__m_size), &$PRIV(__n_size), $P(A), &$PRIV(__m_size), $P(s), $P(U), &$PRIV(__p_size), $P(VT), &$PRIV(__s_size), &tmp_work, &lwork, $P(info)); lwork = (integer )tmp_work; { types(F) %{ float *work = (float *)malloc(lwork * sizeof(float)); %} types(D) %{ double *work = (double *)malloc(lwork * sizeof(double)); %} $TFD(sgesvd_,dgesvd_)( &trau, &travt, &$PRIV(__m_size), &$PRIV(__n_size), $P(A), &$PRIV(__m_size), $P(s), $P(U), &$PRIV(__p_size), $P(VT), &$PRIV(__s_size), work, &lwork, $P(info)); free(work); }', Doc => 'Computes the singular value decomposition (SVD) of a real M-by-N matrix A. Requirements: · Perl


PDL::LinearAlgebra::Real Related Software