projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Partial fix for PR 12859.
[pspp-builds.git]
/
src
/
percentiles.c
diff --git
a/src/percentiles.c
b/src/percentiles.c
index 1c8eef2aae518bfce94945fe8f1aa26fe164f042..8782c36a9b7e77f3fa5c3a60b9f17b0e543dbbba 100644
(file)
--- a/
src/percentiles.c
+++ b/
src/percentiles.c
@@
-15,8
+15,8
@@
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 5
9 Temple Place - Suite 330
, Boston, MA
-0211
1-1307
, USA. */
+Foundation, Inc., 5
1 Franklin Street, Fifth Floor
, Boston, MA
+0211
0-1301
, USA. */
#include "factor_stats.h"
#include "percentiles.h"
#include "factor_stats.h"
#include "percentiles.h"
@@
-355,14
+355,22
@@
tukey_hinges(const struct weighted_value **wv,
for ( i = 0 ; i < 3 ; i++ )
{
for ( i = 0 ; i < 3 ; i++ )
{
- assert(h[i] + 1< n_data);
if ( h[i] >= 0 )
a_star = l[i] - wv[h[i]]->cc ;
else
a_star = l[i];
if ( h[i] >= 0 )
a_star = l[i] - wv[h[i]]->cc ;
else
a_star = l[i];
- a = a_star / ( wv[h[i]+1]->cc ) ;
+ if ( h[i] + 1 >= n_data )
+ {
+ assert( a_star < 1 ) ;
+ hinge[i] = (1 - a_star) * wv[h[i]]->v.f;
+ continue;
+ }
+ else
+ {
+ a = a_star / ( wv[h[i] + 1]->cc ) ;
+ }
if ( a_star >= 1.0 )
{
if ( a_star >= 1.0 )
{
@@
-370,15
+378,15
@@
tukey_hinges(const struct weighted_value **wv,
continue;
}
continue;
}
- if ( wv[h[i]
+
1]->w >= 1)
+ if ( wv[h[i]
+
1]->w >= 1)
{
{
- hinge[i] = ( 1 - a_star)* wv[h[i]]->v.f
- + a_star * wv[h[i]
+
1]->v.f;
+ hinge[i] = ( 1 - a_star)
* wv[h[i]]->v.f
+ + a_star * wv[h[i]
+
1]->v.f;
continue;
}
continue;
}
- hinge[i] = (
1 - a)* wv[h[i]]->v.f + a * wv[h[i]+
1]->v.f;
+ hinge[i] = (
1 - a) * wv[h[i]]->v.f + a * wv[h[i] +
1]->v.f;
}
}