#include "libscl.h"
using namespace scl;
using namespace std;


struct dumb_val {
  bool     positive;
  REAL     log_den;
           dumb_val() : positive(false), log_den(-REAL_MAX) { }
           dumb_val(bool p, REAL l) : positive(p), log_den(l) { }
 
// Constructs a dumb_val from REAL and converts REAL to dumb_val
           dumb_val(REAL l) : positive(true), log_den(l) {}
 
// Converts dumb_val to REAL
           operator REAL() const { return this->log_den; }
 
// Constructs a dumb_val from INTEGER but does not convert
  explicit dumb_val(INTEGER i) : positive(true), log_den(REAL(i)) {}
 
  dumb_val operator+=(dumb_val f)
  {
    positive = positive && f.positive;
    if (positive) log_den += f.log_den;
    else  log_den = -REAL_MAX;
    return *this;
  }
};


int main(int argc, char** argp, char** envp)
{
  dumb_val dv(1);
  cout << dv << '\n';
  dv = 5.0;
  cout << dv << '\n';
  return 0;
}
