bugGNU Octave - Bugs: bug #56537, [octave forge] (signal) marcumq...


bug #56537: [octave forge] (signal) marcumq can return impossible values or hang completely

Submitted by:  None
Submitted on:  Fri 21 Jun 2019 04:25:20 PM UTC  
Category:  Octave Forge Package Severity:  3 - Normal
Priority:  3 - Low Item Group:  Inaccurate Result
Status:  Confirmed Assigned to:  None
Originator Name:  Jerry W. Lewis Originator Email:  -email is unavailable-
Open/Closed:  Open Release:  dev
Operating System:  Any

Add a New Comment (Rich Markup)

You are not logged in

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


Thu 27 Jun 2019 09:57:05 AM UTC, comment #2: 

I tried to rearrange the existing code. I was able to improve it a little bit, but not much. I think we should consider the reference in matlab documentation, that is

Shnidman, D. A., “The Calculation of the Probability of Detection and the Generalized Marcum Q-Function,” IEEE Transactions on Information Theory, Vol. IT-35, March, 1989, pp. 389–400.

Marco Caliari <caliari>
Project Member
Wed 26 Jun 2019 05:01:55 PM UTC, comment #1: 

Confirmed in current versions of Octave and the signal package. Improvements to the marcumq function are of course welcome.

Mike Miller <mtmiller>
Project Administrator
Fri 21 Jun 2019 04:25:20 PM UTC, original submission:  

The marcumq function calculates a probability and therefore should be bounded by zero and one.  However, the implementation in the Octave 4.4.1 communications package running under Windows (W10) can return Inf without detecting any problems.  Also, it can get into what appears to be an infinite loop.

To illustrate these problems, consider the calculation
   marcumq(sqrt(0.2*m), sqrt(2.1*ma), m)
implemented as an anonymous function

pkg load communications
f = @(m) marcumq(sqrt(0.2*m), sqrt(2.1*m), m)
f([1,10,100,604]) % essentially machine accuracy for m<=604
f([605,634]) % Inf with no warnings for 605<=m<=634 (should be [0.87004,0.87573])
f(635)       % Inf with warnings for 635<=m<=1033   (should be 0.87592)
f(1033)      % Inf with warnings for 635<=m<=1033   (should be 0.93048)
f(1034)      % hangs (infinite loop?) for m>=1034   (should be 0.93058)



(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 caliari (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 7 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-06-26 mtmiller CategoryNone => Octave Forge Package
        Priority5 - Normal => 3 - Low
        Item GroupNone => Inaccurate Result
        StatusNone => Confirmed
        Release4.4.1 => dev
        Operating SystemMicrosoft Windows => Any
        Summarymarcumq can return impossible values or hang completely => [octave forge] (signal) marcumq can return impossible values or hang completely

    Back to the top

    Powered by Savane 3.5