I certainly didn't mean to scoff at Fortran - it was my first programming
language and I still know it much better than C. I _was_ trying to say that
it might be more sensible, as you're (JR) doing, to link J directly - or
almost directly - to a fortran-compiled library rather than a c-compilation
of a translation from fortran to c, which might be expected to suffer from
"loss in translation" and inapplicability of the hand-coded fortran
optimisation to a c binary.

Later postings discuss Fortran's column-major ordering. With a bit of care,
it wouldn't necessarily matter. For example, in dgeev, which had so much
discussion recently, the current dgeev_jlapack_ verb transposes the input
matrix to satisfy Fortran's column-major requirement. But if you don't
bother to transpose it, the answers are still usable; you can just swap
the left & right-hand eigenvectors, premultiply instead of postmultiply,
etc etc. Perhaps there are some rank-3 or greater arrays somewhere where
all this gets too confusing.

The matlisp library whic I mentioned yesterday includes many fortran
routines not in LAPACK or BLAS, so the new number of LAPACK entries is
about 640 rather than the 800+ I claimed earlier.

Mike

John Randall wrote:

The cygwin distribution contains updated versions of the FORTRAN version of
LAPACK, a non-optimized BLAS, and ATLAS (for producing an optimized
version of the BLAS).  These files are in /usr/lib/lapack.  I am trying to
get these to work with lapack.ijs: if this is possible, it may be a way to
go.

I would not scoff at FORTRAN as a language for this type of thing: this is
what the language was designed for.  The first chapter of "Numerical
Recipes in C" gives a long list of reasons why the book is not a good
idea.

My goal is now to use the libraries from the cygwin distribution (which
are under active development) and

(a) figure out how to link to the FORTRAN libraries
(b) figure out how to optimize the BLAS


Best wishes,

John


Mike Day wrote:
NB For windows, the "new" LAPACK.dll mentioned below does
appear to need blas.dll, in a path known to windows,
eg c:\windows, or add its location to $PATH.

Mike Day wrote:

The LAPACK initiative seems to have got a bit marooned. It looks as
if the latest version, LAPACK 3.0+ (?), dates from Summer 2000. The
intros mention that the package was optimised in Fortran - and a
subroutine set BLAS preferably to be optimised on target machines -
and there are developments in Java, C (as we knew), C++ etc.

There's a remark in "http://www.netlib.org/lapack++/"; that
"Lapack++ has been superseded by the Template Numerical Toolkit (TNT)
<http://math.nist.gov/tnt/>, which
utilizes new features of the ANSI C++ specification. TNT is a new
design, but will
integrate the functionality of lapack++, IML++
<http://math.nist.gov/iml++/>, SparseLib++
<http://math.nist.gov/sparselib++/>, and mv++
<http://math.nist.gov/mv++/>."
Another can of worms?

Assuming LAPACK is still required in view of these developments, I
wonder if it would be better to try to compile or get hold of a
Fortran-sourced dll than use the C translation which presumably
loses some of the benefit of all that optimisation, but perhaps
the J to Fortran linkage is too difficult. (My own Ftn compiler
is Salford's F90 (was F77) and I've never managed to link it to
J or APL!)

Anyway, I did discover a seemingly C-sourced dll more up to date
than the one I've previously used for J in windows; it's embedded
in (look out for line breaks)
"http://sourceforge.net/project/showfiles.php?group_id=4511&package_id=4518&release_id=191000";

within a "matlisp" package. There's also a blas.dll . There are
over 800 .f files (eg dgeev.f) which suggests that number of fortran
subroutines greater than the number, 541, of routine descriptions
in the old jlapack package (eg dgeev.lap). These files’ headers
provide suitable documentation. There also a host of lisp files
which are evidently cover functions in that language and evidently
not needed for jlapack.

I loaded these dlls into j601\addons\lapack, renamed lapack.dll as
jlapack.dll and tried the LAPACK studio; it seems to work! I don’t
know if blas.dll is necessary; it doesn’t seem to be used for
dgeev, but might be necessary for other work.

Mike


John Randall wrote:

Many questions about LAPACK are answered at

http://www.netlib.org/lapack/faq.html

There are prebuilt binaries for some architectures at

http://www.netlib.org/lapack/archives/

Whether these need additional tweaking to work with J, I don't know: if
not, it is probably better to let the netlib people do the work.

Best wishes,

John


Eric Iverson wrote:


Quick comment: the lapack distributed with J Windows was built from
lapack
source from several years ago. There have been serveral updates to the
source since then. Unix Lapack tends to be part of of the
distribution and
is likely more current. Perhaps we (Jsoftware) should distribute a
more
current windows lapack, but this is probably an area where user
contribution
would be a better route. That is, someone with interest and knowledge
should
build a current Windows Lapack (assuming this isn't simply a matter of
providing a pointer to someone else who already does this) and
provide the
links and downloads.

----- Original Message -----
From: "John Randall" <[EMAIL PROTECTED]>
To: "Programming forum" <[email protected]>
Sent: Friday, March 03, 2006 7:16 AM
Subject: Re: [Jprogramming] LAPACK question: principal eigenvector




There do seem to be slight variations between results from the
Windows
and
Linux versions of LAPACK.  They are mathematically insignificant, but
have
an effect if you are erroneously relying on order of results.
Here's my
revised code for calculating a principal eigenvector using LAPACK.

require '~addons/lapack/lapack.ijs'
require '~addons/lapack/dgeev.ijs'
la=:3 : 0
'l c r'=.dgeev_jlapack_ y.
({. \: c){"1 r
)

und=: >(1,1,5);(1,1,3);((%5),(%3),1) NB. "Understandability
(%+/)power und
0.48064 0.405388 0.113972
 %+/)la und
0.48064 0.405388 0.113972

Best wishes,

John



----------------------------------------------------------------------
For information about J forums see
http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm



----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm




----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm



----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to