Number | 59
|
Category | errata
|
Synopsis | chi_square function is wrong
|
State | lrmdraft
|
Class | errata-simple
|
Arrival-Date | Nov 21 2001
|
Originator |
|
Release | 2001b: 17.9.3
|
Environment |
http://boydtechinc.com/btf/archive/btf_1998/0194.html |
Description |
John wrote: The IEEE 1364-2001 manual lists the "C" source code for the $dist_chi_square system task in section "17.9.3 Algorithm for probabilistic distribution functions" on page 319 and 320. It appears that the "C" code on page 320 for $dist_chi_square is an incorrect cut and paste from another portion of the "C" code. John, You seem to be correct. The original chi_square code as submitted by Adam Krolnik on 27 May 98, from Cadence code submitted by Tom Fitzpatrick: static double chi_square(seed,deg_of_free) long *seed,deg_of_free; { double x; long k; if(deg_of_free % 2) { x = normal(seed,0,1); x = x * x; } else { x = 0.0; } for(k = 2;k <= deg_of_free;k = k + 2) { x = x + 2 * exponential(seed,1); } return(x); } Interesting, in the review of Draft 5, Anne Harris (comment EC-30) spotted a problem here. It seems that in Draft 6, it was either corrected incompletely or wrong. |
Fix |
In 17.9.3, replace chi_square function text with the following: static double chi_square(seed,deg_of_free) long *seed,deg_of_free; { double x; long k; if(deg_of_free % 2) { x = normal(seed,0,1); x = x * x; } else { x = 0.0; } for(k = 2;k <= deg_of_free;k = k + 2) { x = x + 2 * exponential(seed,1); } return(x); } |
Audit-Trail |
|
Unformatted |
John Williamson <john@simucad.com> |
Hosted by Boyd Technology