Adopt use of gnulib for portability.
[pspp-builds.git] / src / percentiles.c
index 1c8eef2aae518bfce94945fe8f1aa26fe164f042..4e618ad4a30f5b12c0f43b81c1bf81accd3fa722 100644 (file)
@@ -15,13 +15,17 @@ 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
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA. */
 
 #include "factor_stats.h"
 #include "percentiles.h"
 #include "misc.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 #include <assert.h>
 
 
@@ -355,14 +359,22 @@ tukey_hinges(const struct weighted_value **wv,
 
   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];
 
-      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 ) 
        {
@@ -370,15 +382,15 @@ tukey_hinges(const struct weighted_value **wv,
          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;
        }
 
-      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;
       
     }