copyright (1K)
Changes (1K)
Home | Download | Support
Download Expokit
This file is the complete expokit package, current release. If you experience troubles while downloading this file as a whole, try this split download.

Or browse inside Expokit:


paper.pdf (333K).....paper describing the theoretical basis of the methods in the package
README ..........text version of this webpage
Makefile ..........Fortran makefile
expokit.f ..........all-in-one file, i.e., concatenation of all .f files,
except BLAS, LAPACK and the aid and driver routines.
Hence a minimal Fortran trial would include:
Makefile, expokit.f, blas.f, lapack.f, mataid.f,
and one of the drivers.

|||||||||||||||||||||||||||||||| FORTRAN |||||||||||||||||||||||||||||


dgpadm.f zgpadm.f exp(t*A) in full using irreducible Pade, A general
dspadm.f zhpadm.f exp(t*A) in full using Pade, A symmetric/Hermitian
dgchbv.f zgchbv.f exp(t*A)*v using Chebyshev, A general
dschbv.f exp(t*A)*v using Chebyshev, A symmetric
dnchbv.f znchbv.f exp(t*A)*v using Chebyshev, A upper Hessenberg
blas.f minimal substitute to BLAS
lapack.f minimal substitute to LAPACK


dmexpv.f exp(t*A)*v using Krylov, A is a Markov matrix
dgexpv.f zgexpv.f exp(t*A)*v using Krylov, A general
dsexpv.f zhexpv.f exp(t*A)*v using Krylov, A symmetric/Hermitian
dgphiv.f zgphiv.f exp(t*A)*v + t*phi(t*A)*u using Krylov, A general
dsphiv.f zhphiv.f exp(t*A)*v + t*phi(t*A)*u using Krylov, A sym/Hem

dgcnvr.f zgcnvr.f convert a sparse format into another one
dgmatv.f zgmatv.f matrix-vector utilities
loadhb.f load and converts a Harwell-Boeing matrix

mataid.f concatenation of the files above (i.e., __cnvr.f,
__matv.f, and loadhb.f)


sample_d.f dense example
sample_g.f general example
sample_z.f Complex example
sample_b.f forward-backward example
sample_m.f Markov example
sample_p.f phi example

clock.f utility timer function - MUST BE SET BY THE USER

c1024.crs.gz Markov chain matrix used in sample_m.f
gr3030.gz Harwell-Boeing matrix used in sample_b.f
orani678.gz Harwell-Boeing matrix used in sample_g.f/_p.f
bcspwr10.gz Harwell-Boeing pattern used in sample_z.f

||||||||||||||||||||||||||||||| MATLAB |||||||||||||||||||||||||||||||

chbv.m Chebyshev algorithm for w = exp(t*A)v
padm.m irreducible Pade algorithm for exp(t*A)
phiv.m Krylov algorithm for w = exp(t*A)*v + t*phi(t*A)u
expv.m Krylov algorithm for w = exp(t*A)*v
mexpv.m Markov algorithm for w = exp(t*A)*v

mat2ccs.m save matrix into an ascii file under CCS format
mat2coo.m save matrix into an ascii file under COO format
mat2crs.m save matrix into an ascii file under CRS format

loadccs.m load matrix from a file under CCS format
loadcoo.m load matrix from a file under COO format
loadcrs.m load matrix from a file under CRS format

example.m sample program illustrating the use of _expv.m

|||||||||||||||||||||||||||| PLATFORMS |||||||||||||||||||||||||||||

Glance at the Makefile and clock.f in the fortran directory and edit them
as appropriate, e.g., you might want to take full advantage of your local
installations of LAPACK and BLAS if you have them. Just set LIBS according
to your local installations, e.g., on most systems, LIBS = -llapack -lblas
(or LIBS = -lcomplib.sgimath on the SGI). If they are not installed, no
worries. You can take steps later to have them installed by your system
administrator (it is worth the trouble). For now, Expokit will work with
the default settings. To compile one of the sample_driver given above,
simply stay in the fortran directory and type: make sample_driver. For
example, to compile the dense example, simply type: make sample_d.

The drivers have been successfully tested on the following platforms:

SPARC workstation

RS/6000 workstation
SP2 (one node)

Indy workstation
Power Challenge (one node)

Redhat 6.2
PC running the g77 Fortran compiler from GCC 2.95.2

Others? Please notify.

||||||||||||||||||||||||||||||| BUGS |||||||||||||||||||||||||||||||

On some systems, the compilation of Expokit will generate a warning
message about an incompatibility of type in the call of DNCHBV. This is
due to the fact that a real array is used as argument where a complex
array is expected. This is an artefact to avoid an otherwise idle
complex array in the calling routine. Thus it is not a bug as such
and no side-effects arise. There is a notice about this in the header

||||||||||||||||||||||||||| SPLIT DOWNLOAD |||||||||||||||||||||||||

When the network is crowded, it may be difficult to download the file
expokit.tar.gz as a whole. The following steps can be taken to
attempt to overcome the problem:

1. download these components:
expokit.1 (200K)
expokit.2 (200K)
expokit.3 (200K)
expokit.4 (200K)
expokit.5 (174K)

2. Now that the files are available locally, it suffices to execute
the following commands:
cat expokit.? > expokit.all
uudecode expokit.all (expokit.tar.gz is rebuilt with this)