apjanke / octave-testify

New BIST (Built-In Self Test) functions for GNU Octave
GNU General Public License v3.0
4 stars 2 forks source link

eigs test is failing out early #54

Closed apjanke closed 5 years ago

apjanke commented 5 years ago
>> test2_refactor eigs verbose
>>>>> /Applications/Octave-5.1.0.app/Contents/Resources/usr/Cellar/octave-octave-app@5.1.0/5.1.0/share/octave/5.1.0/m/sparse/eigs.m
*****  shared (block #1)

 n = 20;
 k = 4;
 A = sparse ([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[ones(1,n-2),4*ones(1,n),ones(1,n-2)]);
 d0 = eig (A);
 d2 = sort (d0);
 [~, idx] = sort (abs (d0));
 d0 = d0(idx);
 old_state = rand ("state");
 restore_state = onCleanup (@() rand ("state", old_state));
 rand ("state", 42); # initialize generator to make eigs behavior reproducible
  -> success=1, msg=--original message--
*****  testif (block #2)

 d1 = eigs (A, k);
 assert (d1, d0(end:-1:(end-k+1)), 1e-11);
  -> success=1, msg=
*****  testif (block #3)

 d1 = eigs (A, k+1);
 assert (d1, d0(end:-1:(end-k)), 1e-11);
  -> success=1, msg=
*****  testif (block #4)

 d1 = eigs (A, k, "lm");
 assert (d1, d0(end:-1:(end-k+1)), 1e-11);
  -> success=0, msg=test failed: raised error: 'p' undefined near line 231 column 11
PASSES 2 out of 3 tests
>>

That doesn't look right. What's that "p"?

apjanke commented 5 years ago

That "p" thing is no longer happening. Now the test is failing in test2 at the same place it fails in Octave's own test, albeit with different values.

>> test2 eigs
----- Failure details: block 190 -----
***** test block 190: testif
  is_test=1 is_xtest=0
  feature_line=' HAVE_ARPACK' feature='{ARPACK}'
Code:
 M = magic (10);
 A = sin (M);
 B = cos (M);
 B = B * B';
 opts.v0 = (1:10)';
 [Evector, Evalues] = eigs (A, B, 4, "SM", opts);
 [L, U, P] = lu (A);
 Afun = @(x) U \ (L \ (P * x));
 [Evector_f Evalues_f] = eigs (Afun, 10, B, 4, "SM", opts);
 assert (Evector, Evector_f);
 assert (Evalues, Evalues_f);
--> success=0, msg=test failed: raised error: ASSERT errors for:  assert (Evector,Evector_f)

  Location  |  Observed  |  Expected  |  Reason
   (8,1)     0.090748+0i  0.090748+0i    Abs err 2.7756e-17 exceeds tol 0 by 3e-17
   (1,2)     0.17282-0.32323i 0.17282-0.32323i   Abs err 2.7756e-17 exceeds tol 0 by 3e-17
   (2,2)     1.2399+0.032436i 1.2399+0.032436i   Abs err 4.5949e-16 exceeds tol 0 by 5e-16
   (3,2)     -0.70586+0.22393i -0.70586+0.22393i   Abs err 5.5511e-17 exceeds tol 0 by 6e-17
   (4,2)     -0.72387-0.031248i -0.72387-0.031248i   Abs err 2.3967e-16 exceeds tol 0 by 2e-16
   (5,2)     -1.4438+0.080851i -1.4438+0.080851i   Abs err 7.0217e-16 exceeds tol 0 by 7e-16
   (6,2)     -0.20627+0.52785i -0.20627+0.52785i   Abs err 1.6653e-16 exceeds tol 0 by 2e-16
   (7,2)     -1.098-0.21918i -1.098-0.21918i   Abs err 4.5776e-16 exceeds tol 0 by 5e-16
   (8,2)     0.6617-0.33701i 0.6617-0.33701i   Abs err 5.5511e-17 exceeds tol 0 by 6e-17
   (9,2)     0.70201+0.19407i 0.70201+0.19407i   Abs err 1.1102e-16 exceeds tol 0 by 1e-16
   (10,2)    1.4979-0.031914i 1.4979-0.031914i   Abs err 4.7429e-16 exceeds tol 0 by 5e-16
   (1,3)     0.17282+0.32323i 0.17282+0.32323i   Abs err 2.7756e-17 exceeds tol 0 by 3e-17
   (2,3)     1.2399-0.032436i 1.2399-0.032436i   Abs err 4.5949e-16 exceeds tol 0 by 5e-16
   (3,3)     -0.70586-0.22393i -0.70586-0.22393i   Abs err 5.5511e-17 exceeds tol 0 by 6e-17
   (4,3)     -0.72387+0.031248i -0.72387+0.031248i   Abs err 2.3967e-16 exceeds tol 0 by 2e-16
   (5,3)     -1.4438-0.080851i -1.4438-0.080851i   Abs err 7.0217e-16 exceeds tol 0 by 7e-16
   (6,3)     -0.20627-0.52785i -0.20627-0.52785i   Abs err 1.6653e-16 exceeds tol 0 by 2e-16
   (7,3)     -1.098+0.21918i -1.098+0.21918i   Abs err 4.5776e-16 exceeds tol 0 by 5e-16
   (8,3)     0.6617+0.33701i 0.6617+0.33701i   Abs err 5.5511e-17 exceeds tol 0 by 6e-17
   (9,3)     0.70201-0.19407i 0.70201-0.19407i   Abs err 1.1102e-16 exceeds tol 0 by 1e-16
   (10,3)    1.4979+0.031914i 1.4979+0.031914i   Abs err 4.7429e-16 exceeds tol 0 by 5e-16
   (1,4)      -0.1508+0i   -0.1508+0i    Abs err 8.0491e-16 exceeds tol 0 by 8e-16
   (2,4)      -1.7274+0i   -1.7274+0i    Abs err 1.9984e-15 exceeds tol 0 by 2e-15
   (3,4)      0.67154+0i   0.67154+0i    Abs err 2.1094e-15 exceeds tol 0 by 2e-15
   (4,4)      0.55459+0i   0.55459+0i    Abs err 1.3323e-15 exceeds tol 0 by 1e-15
   (5,4)       1.275+0i     1.275+0i     Abs err 1.5543e-15 exceeds tol 0 by 2e-15
   (6,4)     -0.48235+0i  -0.48235+0i    Abs err 1.1657e-15 exceeds tol 0 by 1e-15
   (7,4)       2.031+0i     2.031+0i     Abs err 1.7764e-15 exceeds tol 0 by 2e-15
   (8,4)     -0.22777+0i  -0.22777+0i    Abs err 1.8874e-15 exceeds tol 0 by 2e-15
   (9,4)     -0.81195+0i  -0.81195+0i    Abs err 1.2212e-15 exceeds tol 0 by 1e-15
   (10,4)     -1.7146+0i   -1.7146+0i    Abs err 8.8818e-16 exceeds tol 0 by 9e-16
Aborted test run due to test failure.
PASSES 183 out of 184 tests
>> test eigs
***** testif HAVE_ARPACK
 M = magic (10);
 A = sin (M);
 A = A * A';
 B = cos (M);
 B = B * B';
 opts.v0 = (1:10)';
 [Evector, Evalues] = eigs (A, B, 4, "SM", opts);
 [L, U, P] = lu (A);
 Afun = @(x) U \ (L \ (P * x));
 opts.issym = true;
 [Evector_f Evalues_f] = eigs (Afun, 10, B, 4, "SM", opts);
 assert (Evector, Evector_f);
 assert (Evalues, Evalues_f);
!!!!! test failed
ASSERT errors for:  assert (Evector,Evector_f)

  Location  |  Observed  |  Expected  |  Reason
   (1,1)       -0.16325     -0.16325     Abs err 7.9936e-15 exceeds tol 0 by 8e-15
   (2,1)       0.084822     0.084822     Abs err 3.3529e-14 exceeds tol 0 by 3e-14
   (3,1)       -1.6399      -1.6399      Abs err 1.3323e-15 exceeds tol 0 by 1e-15
   (4,1)       -0.51699     -0.51699     Abs err 1.0991e-14 exceeds tol 0 by 1e-14
   (5,1)       -0.21995     -0.21995     Abs err 5.3957e-14 exceeds tol 0 by 5e-14
   (6,1)       -0.60503     -0.60503     Abs err 8.8818e-15 exceeds tol 0 by 9e-15
   (7,1)        1.3031       1.3031      Abs err 3.3751e-14 exceeds tol 0 by 3e-14
   (8,1)        0.7998       0.7998      Abs err 3.7748e-15 exceeds tol 0 by 4e-15
   (9,1)       0.66599      0.66599      Abs err 1.1102e-14 exceeds tol 0 by 1e-14
   (10,1)      0.33493      0.33493      Abs err 5.5733e-14 exceeds tol 0 by 6e-14
   (1,2)       0.81471      0.81471      Abs err 4.1078e-15 exceeds tol 0 by 4e-15
   (2,2)      -0.020326    -0.020326     Abs err 6.5989e-15 exceeds tol 0 by 7e-15
   (3,2)       0.30581      0.30581      Abs err 7.605e-15 exceeds tol 0 by 8e-15
   (4,2)       0.59307      0.59307      Abs err 7.5495e-15 exceeds tol 0 by 8e-15
   (5,2)       -1.5005      -1.5005      Abs err 9.992e-15 exceeds tol 0 by 1e-14
   (6,2)       -0.73741     -0.73741     Abs err 3.8858e-15 exceeds tol 0 by 4e-15
   (7,2)      0.0077004    0.0077004     Abs err 3.0115e-15 exceeds tol 0 by 3e-15
   (8,2)      -0.027473    -0.027473     Abs err 2.1858e-15 exceeds tol 0 by 2e-15
   (9,2)       -1.2633      -1.2633      Abs err 1.0658e-14 exceeds tol 0 by 1e-14
   (10,2)       1.7682       1.7682      Abs err 9.5479e-15 exceeds tol 0 by 1e-14
   (1,3)       0.023258     0.023258     Abs err 1.3156e-14 exceeds tol 0 by 1e-14
   (2,3)       -0.4755      -0.4755      Abs err 1.5543e-15 exceeds tol 0 by 2e-15
   (3,3)       0.52896      0.52896      Abs err 3.7748e-15 exceeds tol 0 by 4e-15
   (4,3)       0.63382      0.63382      Abs err 5.218e-15 exceeds tol 0 by 5e-15
   (5,3)       -0.53893     -0.53893     Abs err 1.7542e-14 exceeds tol 0 by 2e-14
   (6,3)      -0.064637    -0.064637     Abs err 1.1907e-14 exceeds tol 0 by 1e-14
   (7,3)       0.22818      0.22818      Abs err 9.1593e-16 exceeds tol 0 by 9e-16
   (8,3)       0.19973      0.19973      Abs err 9.7145e-16 exceeds tol 0 by 1e-15
   (9,3)       -0.83295     -0.83295     Abs err 1.199e-14 exceeds tol 0 by 1e-14
   (10,3)      0.46978      0.46978      Abs err 2.0595e-14 exceeds tol 0 by 2e-14
   (1,4)       -2.2974      -2.2974      Abs err 4.4409e-16 exceeds tol 0 by 4e-16
   (2,4)       0.98244      0.98244      Abs err 2.2204e-16 exceeds tol 0 by 2e-16
   (3,4)       -0.12184     -0.12184     Abs err 2.7756e-17 exceeds tol 0 by 3e-17
   (4,4)       0.24305      0.24305      Abs err 2.2204e-16 exceeds tol 0 by 2e-16
   (5,4)       0.53049      0.53049      Abs err 3.3307e-16 exceeds tol 0 by 3e-16
   (6,4)        2.3339       2.3339      Abs err 1.3323e-15 exceeds tol 0 by 1e-15
   (7,4)       -0.98702     -0.98702     Abs err 2.2204e-16 exceeds tol 0 by 2e-16
   (8,4)      -0.0028615   -0.0028615    Abs err 3.4694e-17 exceeds tol 0 by 3e-17
   (9,4)       -0.16497     -0.16497     Abs err 2.7756e-17 exceeds tol 0 by 3e-17
   (10,4)      -0.53045     -0.53045     Abs err 3.3307e-16 exceeds tol 0 by 3e-16
>>

Closing as fixed.