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

 
 

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

Submitter:  None
Submitted:  Fri 21 Jun 2019 04:25:20 PM UTC
   
 
Category:  Octave 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 Fixed Release:  None
Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

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>
Group 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>
Group Member
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)

Anonymous

 

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

Attach Files:
   
   
Comment:
   

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)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 7 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-06-26 mtmiller CategoryNone Octave 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.13-f8d8.
    Corresponding source code