/*
   File:        hype.h
   Author:      Andrew W. Moore
   Created:     Sat Sep 12 14:41:27 EDT 1992
   Description: Header for Hyperrectangles and operations

   Copyright (C) 1992, Andrew W. Moore
*/

#define LO 0
#define HI 1

typedef struct hlimit_struct
{
  float *values;
  bool *finite;
} hlimit;

typedef struct hype_struct
{
  int size;
  hlimit lo;
  hlimit hi;
} hype;

extern void set_hype_infinite();              /* (hy) */
extern hype *create_hype();                   /* (size) */
extern void free_hype();                      /* (hy) */
extern void hype_update();                    /* (hy,comp,limit,value) */
extern void hype_update_infinite();           /* (hy,comp,limit) */
extern bool hype_has_limit();                 /* (hy,comp,limit) */
extern float hype_ref();                      /* (hy,comp,limit) */
extern void fprintf_hype();                    /* (s,m1,hy,m2) */
extern bool is_inside_hype();                 /* (hy,farr) */
extern bool hype_high_limit_is_above();       /* (hy,comp,val) */
extern bool hype_low_limit_is_below();        /* (hy,comp,val) */
extern bool comp_inside_hype();               /* (hy,comp,val) */
extern float clipped_below_value();           /* (hy,comp,val) */
extern float clipped_above_value();           /* (hy,comp,val) */
extern void gp_draw_hype();                   /* (gp,hy) */
extern void gp_draw_hype_border();            /* (gp,hy) */
extern void m_and_s_from_hype();              /* (hy,middle,scales) */
extern void shrink_hype();                    /* (hy,factor,middle) */
extern void clip_hype_with_m_and_s();         /* (hy,middle,scales) */
extern float hype_volume();                   /* (hy,scales) */
extern void copy_hype();                      /* (h1,h2) */
extern int longest_scaled_comp();             /* (hy,scales) */

