bugGNU Octave - Bugs: bug #40470, display routine for variables...


bug #40470: display routine for variables doesn't detect need for scientific format

Submitted by:  None
Submitted on:  Mon 04 Nov 2013 03:04:56 PM UTC  
Category:  Octave Function Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Regression
Status:  Fixed Assigned to:  None
Originator Name:  Alan Genz Originator Email:  -email is unavailable-
Open/Closed:  Closed Release:  dev
Operating System:  GNU/Linux

Add a New Comment (Rich Markup)

You are not logged in

Please log in, so followups can be emailed to you.


( Jump to the original submission)

Thu 07 Nov 2013 06:44:27 PM UTC, comment #7: 

Verified the fix.  Closing report.

Rik <rik5>
Project Administrator
Thu 07 Nov 2013 06:45:39 AM UTC, comment #6: 

I checked in the following changeset:


John W. Eaton <jwe>
Project Administrator
Thu 07 Nov 2013 03:15:30 AM UTC, comment #5: 

So the problem seems to be a regression in the print routine, rather than a problem with normcdf.  I'm re-titling the bug to reflect that.  Simple test code to replicate this is:

x = [1 2e-6]
x =

   1.00000   0.00000

Running the same code under 3.6.4 produces:

x = [1 2e-6]
x =

   1.0000e+00   2.0000e-06

Rik <rik5>
Project Administrator
Thu 07 Nov 2013 01:50:35 AM UTC, comment #4: 

I don't think there's an underflow problem, I think it's simply that values are being displayed with a fixed format when combined in a matrix with other values.

octave:1> format
octave:2> -7, normcdf(-7)
ans = -7
ans =    1.2798e-12
octave:3> [-7, normcdf(-7)]
ans =

  -7.00000   0.00000

octave:4> format long
octave:5> [-7, normcdf(-7)]
ans =

  -7.000000000000000   0.000000000001280

Mike Miller <mtmiller>
Project Administrator
Thu 07 Nov 2013 01:47:09 AM UTC, comment #3: 

Here's some more results,  what I get with


octave:1> disp([-7 normcdf(-7)])
  -7.0000e+00   1.2798e-12


octave:1> disp([-7 normcdf(-7)])
  -7.00000   0.00000

Mike Miller <mtmiller>
Project Administrator
Wed 06 Nov 2013 08:59:01 AM UTC, comment #2: 

I cannot reproduce the problem with 3.6.2, nor with http://octave-online.net/ (which is 3.7.2+).


Marco Caliari <caliari>
Project Member
Mon 04 Nov 2013 08:13:52 PM UTC, comment #1: 

Still present on the development branch.  Probably can't squeeze this in before the 3.8 release, but possibly in the first bug fix release.

Rik <rik5>
Project Administrator
Mon 04 Nov 2013 03:04:56 PM UTC, original submission:  

octave:21> for t=-[7:10],disp([t exp(-t^2/2) normcdf(t)]),end
  -7.0000e+00   2.2897e-11   1.2798e-12
  -8.0000e+00   1.2664e-14   6.1062e-16
  -9.00000   0.00000   0.00000
  -10.00000    0.00000    0.00000
octave:22> for t=-[7:10],disp([t exp(-t^2/2)]),end
  -7.0000e+00   2.2897e-11
  -8.0000e+00   1.2664e-14
  -9.0000e+00   2.5768e-18
  -1.0000e+01   1.9287e-22
octave:23> for t=-[7:10],disp([t normcdf(t)]),end
  -7.0000e+00   1.2798e-12
  -8.0000e+00   6.1062e-16
  -9   0
  -10    0

The above results are inconsistent; normcdf should not
underflow to 0 until t is near -37.
But why is exp also affected?
This bug has been reported previously (see #29543).
The simple fix is to use normcdf(t) = erfc-t/sqrt(2))/2:
octave:27> for t=-[7:10],disp([t exp(-t^2/2) ...
  -7.0000e+00   2.2897e-11   1.2798e-12
  -8.0000e+00   1.2664e-14   6.2210e-16
  -9.0000e+00   2.5768e-18   1.1286e-19
  -1.0000e+01   1.9287e-22   7.6199e-24

Here are some Matlab results for comparison

>> for t=-[7:10],disp([t exp(-t^2/2) ...

           -7   2.2897e-11   1.2798e-12
           -8   1.2664e-14    6.221e-16
           -9   2.5768e-18   1.1286e-19
          -10   1.9287e-22   7.6199e-24



(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by jwe (Posted a comment)
  • -email is unavailable- added by mtmiller (Posted a comment)
  • -email is unavailable- added by caliari (Posted a comment)
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by None (Submitted the item)

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.




    Follow 6 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2013-11-07 rik5 StatusConfirmed => Fixed
        Open/ClosedOpen => Closed
    2013-11-07 rik5 SummaryWrong output from normcdf (with exp?) for negatives => display routine for variables doesn't detect need for scientific format
    2013-11-07 mtmiller Item GroupInaccurate Result => Regression
        Release3.2.4 => dev
    2013-11-04 rik5 StatusNone => Confirmed

    Back to the top

    Powered by Savane 3.7