|
From: | David Bateman |
Subject: | Re: porting arapck code to octave |
Date: | Sat, 20 Dec 2008 17:23:34 +0100 |
User-agent: | Mozilla-Thunderbird 2.0.0.17 (X11/20081018) |
Jaroslav Hajek wrote:
1. rather than your MY_LOCAL_BUFFER, you can use the pre-defined OCTAVE_LOCAL_BUFFER_INIT. 2. the following snippet: for (octave_idx_type i = 0; i < n; i++) workd[i+ipntr[1]-1] = static_cast<double>(i) * workd[i+ipntr[0]-1]; is obviously not multiplying by diag(1:100), but by diag(0:99). 3. retval(1) = eig_val; retval(2) = eig_vec; should read retval(0) = eig_val; retval(1) = eig_vec; after correcting these problems, I get the correct answer: ans = 97.000 98.000 99.000 100.000 regards
Unfortunately, that doesn't work for me as it never gets to point 3) and in any case point 2) would just mean the eigenvalues that are found should be [99, 98, 97, 96]... The code has an internal error in the arpack function dsaupd (error number -9999).. However, as it seems to work for you the question is why it works for you and not me...
Basically, I can only see compiler/linker issues as a reason at the moment.. I compiled with gfortran version 4.3.2 and the flags
FFLAGS = -O2 -fPICand linked dssimp.oct against the shared version of the library. What did you do differently?
D. -- David Bateman address@hidden 35 rue Gambetta +33 1 46 04 02 18 (Home) 92100 Boulogne-Billancourt FRANCE +33 6 72 01 06 33 (Mob)
[Prev in Thread] | Current Thread | [Next in Thread] |