/* generated by Id 1.0 at 2007-08-31 06:58:56 Z */
/* with the command: -I../stage1/ -c Float.st -o ../stage2/Float.o.c */

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <setjmp.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <assert.h>
#define GC_DLL 1
#include <gc/gc.h>
#if defined(WIN32)
# include <malloc.h>
# include <windows.h>
  typedef HINSTANCE dlhandle_t;
# define dlopen(path, mode)	LoadLibrary(path)
# define dlsym(handle, name)	((void *)GetProcAddress(handle, name))
# define dlclose(handle)	FreeLibrary(handle)
# include <winbase.h>
  inline int gettimeofday(struct timeval *tp, void *tzp)
  {
     union {
       long long ns100;
       FILETIME ft;
     } _now;
     GetSystemTimeAsFileTime(&_now.ft);
     tp->tv_usec= (long)((_now.ns100 / 10LL) % 1000000LL);
     tp->tv_sec= (long)((_now.ns100 - (116444736000000000LL)) / 10000000LL);
     return 0;
   }
#else
# include <dlfcn.h>
  typedef void *dlhandle_t;
#endif
#ifndef O_BINARY
# define O_BINARY 0
#endif

typedef struct t__object *oop;

typedef oop (*_imp_t)(oop _thunk, oop receiver, ...);

struct __closure
{
  _imp_t method;
  oop	 data;
};

static void              *(*_local_param   )(int index)= 0;
static oop  		  (*_local_intern  )(const char *string)= 0;
static oop  		  (*_local_proto   )(oop base)= 0;
static oop  		  (*_local_import  )(const char *name)= 0;
static oop  		  (*_local_export  )(const char *name, oop value)= 0;
static void 		  (*_local_method  )(oop type, oop selector, _imp_t method)= 0;
static oop  		  (*_local_alloc   )(oop type, size_t size)= 0;
static oop  		 *(*_local_palloc  )(size_t size)= 0;
static void  		 *(*_local_balloc  )(size_t size)= 0;
static struct __closure  *(*_local_bind    )(oop selector, oop receiver)= 0;
static oop                (*_local_nlreturn)(oop nlr, oop result)= 0;
static oop                (*_local_nlresult)(void)= 0;
static oop  		    _local_object= 0;
static oop  		   *_local_tag_vtable= 0;
static oop  		   *_local_nil_vtable= 0;
static void               (*_local_gc_addRoots)(char *lo, char *hi)= 0;
static void	          (*_local_gc_unregisterDisappearingLink)(void *ptr)= 0;
static void		  (*_local_gc_generalRegisterDisappearingLink)(void *link, void *ptr)= 0;
static void		  (*_local_gc_gcollect)(void)= 0;
static void		 *(*_local_enter)(char *name, char *type, char *file)= 0;
static void		  (*_local_line)(int line)= 0;
static void		  (*_local_leave)(void *)= 0;
static char		 *(*_local_backtrace)(void)= 0;

#define _param(INDEX)		_local_param(INDEX)
#define _selector(NAME)		_local_intern(NAME)
#define _proto(BASE)		_local_proto(BASE)
#define _id_import(NAME)	_local_import(NAME)
#define _id_export(NAME, VAL)	_local_export((NAME), (VAL))
#define _method(TYPE, SEL, IMP)	_local_method((TYPE), (SEL), (_imp_t)(IMP))
#define _alloc(RCV, LBS)	_local_alloc((RCV), (LBS))
#define _palloc(LBS)		_local_palloc((LBS))
#define _balloc(LBS)		_local_balloc((LBS))
#define _nlreturn(NLR, ARG)	_local_nlreturn((NLR), (ARG))
#define _nlresult()		_local_nlresult()
#define _backtrace()		_local_backtrace()
#ifdef ID_DEBUG
# define _enter(NM, TYPE, FILE)	void *__id_debug= _local_enter(NM, TYPE, FILE)
# define _line(line)		_local_line(line)
# define _leave()		_local_leave(__id_debug)
#else
# define _enter(NM, TYPE, FILE)
# define _line(line)
# define _leave()
#endif
#define _return			_leave(); return

#define _send(MSG, RCV, ARG...) ({					\
  register oop _r= (RCV);						\
  struct __closure *_c= (struct __closure *)_local_bind((MSG), _r);	\
  (_c->method)((oop)_c, _r, _r, ##ARG);					\
})

#define _super(TYP, MSG, RCV, ARG...) ({				\
  register oop _r= (RCV);						\
  struct __closure *_c= (struct __closure *)_local_bind((MSG), (TYP));	\
  (_c->method)((oop)_c, _r, _r, ##ARG);					\
})

static oop s__3c_3d= 0;
static oop s_isFloat= 0;
static oop s_asFloat= 0;
static oop s_hash= 0;
static oop s_value_5f_= 0;
static oop s__5fimport_= 0;
static oop s_ifFalse_= 0;
static oop s_print= 0;
static oop s_negated= 0;
static oop s__2d= 0;
static oop s__2b= 0;
static oop s__2f= 0;
static oop s_abs= 0;
static oop s_copy= 0;
static oop s__3d= 0;
static oop s_setIntegerValue_5f_= 0;
static oop s__5fintegerValue= 0;
static oop s_adaptToFloat_andSend_= 0;
static oop s_new= 0;
static oop s_size_5f_value_5f_= 0;
static oop s__2a= 0;
static oop s__3c= 0;
static oop s__3e= 0;
static oop s_truncated= 0;
static oop s_fractionPart= 0;
static oop s_exponent= 0;
static oop s_sin= 0;
static oop s_ifTrue_ifFalse_= 0;
static oop s_adaptToInteger_andSend_= 0;
static oop s_perform_with_= 0;
static oop s__7e_3d= 0;
static oop s__3e_3d= 0;
static oop s_pi= 0;
static oop s__5fsizeof= 0;
static oop s_asInteger= 0;
static struct _Selector { const char *name; oop *addr; } _Selectors[]= {
  { "<=", &s__3c_3d },
  { "isFloat", &s_isFloat },
  { "asFloat", &s_asFloat },
  { "hash", &s_hash },
  { "value_:", &s_value_5f_ },
  { "_import:", &s__5fimport_ },
  { "ifFalse:", &s_ifFalse_ },
  { "print", &s_print },
  { "negated", &s_negated },
  { "-", &s__2d },
  { "+", &s__2b },
  { "/", &s__2f },
  { "abs", &s_abs },
  { "copy", &s_copy },
  { "=", &s__3d },
  { "setIntegerValue_:", &s_setIntegerValue_5f_ },
  { "_integerValue", &s__5fintegerValue },
  { "adaptToFloat:andSend:", &s_adaptToFloat_andSend_ },
  { "new", &s_new },
  { "size_:value_:", &s_size_5f_value_5f_ },
  { "*", &s__2a },
  { "<", &s__3c },
  { ">", &s__3e },
  { "truncated", &s_truncated },
  { "fractionPart", &s_fractionPart },
  { "exponent", &s_exponent },
  { "sin", &s_sin },
  { "ifTrue:ifFalse:", &s_ifTrue_ifFalse_ },
  { "adaptToInteger:andSend:", &s_adaptToInteger_andSend_ },
  { "perform:with:", &s_perform_with_ },
  { "~=", &s__7e_3d },
  { ">=", &s__3e_3d },
  { "pi", &s_pi },
  { "_sizeof", &s__5fsizeof },
  { "asInteger", &s_asInteger },
  { 0, 0 }
};
struct t__object {
  struct _vtable *_vtable[0];
};
struct t__selector {
  struct _vtable *_vtable[0];
  oop v__size;
  oop v__elements;
};
struct t__assoc {
  struct _vtable *_vtable[0];
  oop v_key;
  oop v_value;
};
struct t__closure {
  struct _vtable *_vtable[0];
  oop v__method;
  oop v_data;
};
struct t__vector {
  struct _vtable *_vtable[0];
  oop v__size;
};
struct t__vtable {
  struct _vtable *_vtable[0];
  oop v__tally;
  oop v_bindings;
  oop v_delegate;
};
struct t_Object {
  struct _vtable *_vtable[0];
};
struct t_UndefinedObject {
  struct _vtable *_vtable[0];
};
struct t_StaticBlockClosure {
  struct _vtable *_vtable[0];
  oop v__function;
  oop v__arity;
};
struct t_BlockClosure {
  struct _vtable *_vtable[0];
  oop v__function;
  oop v__arity;
  oop v_outer;
  oop v_state;
  oop v__nlr;
};
struct t_Magnitude {
  struct _vtable *_vtable[0];
};
struct t_Character {
  struct _vtable *_vtable[0];
  oop v_value;
};
struct t_Number {
  struct _vtable *_vtable[0];
};
struct t_Fraction {
  struct _vtable *_vtable[0];
  oop v_numerator;
  oop v_denominator;
};
struct t_Float {
  struct _vtable *_vtable[0];
};
struct t_Integer {
  struct _vtable *_vtable[0];
};
struct t_SmallInteger {
  struct _vtable *_vtable[0];
};
struct t_LargePositiveInteger {
  struct _vtable *_vtable[0];
  oop v_bytes;
};
struct t_LargeNegativeInteger {
  struct _vtable *_vtable[0];
  oop v_bytes;
};
struct t_Collection {
  struct _vtable *_vtable[0];
};
struct t_SequenceableCollection {
  struct _vtable *_vtable[0];
};
struct t_ArrayedCollection {
  struct _vtable *_vtable[0];
  oop v_size;
};
struct t_Array {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
struct t_ImmutableArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
struct t_WordArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__words;
};
struct t_ImmutableWordArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__words;
};
struct t_ByteArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_ImmutableByteArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_String {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_ImmutableString {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_Symbol {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_nil {
  struct _vtable *_vtable[0];
};
struct t_true {
  struct _vtable *_vtable[0];
};
struct t_false {
  struct _vtable *_vtable[0];
};
struct t_CharacterTable {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
static oop l_1= 0;
static oop l_2= 0;
static oop l_3= 0;
static oop l_4= 0;
static oop l_5= 0;
static oop l_6= 0;
static oop l_7= 0;
static oop l_8= 0;
static oop l_9= 0;
static oop l_10= 0;
static oop l_11= 0;
static oop l_12= 0;
static oop l_13= 0;
static oop v__object= 0;
static oop v_Object= 0;
static oop v_UndefinedObject= 0;
static oop v_StaticBlockClosure= 0;
static oop v_Magnitude= 0;
static oop v_Number= 0;
static oop v_Float= 0;
static oop v_Integer= 0;
static oop v_SmallInteger= 0;
static oop v_LargePositiveInteger= 0;
static oop v_Collection= 0;
static oop v_SequenceableCollection= 0;
static oop v_ArrayedCollection= 0;
static oop v_Array= 0;
static oop v_WordArray= 0;
static oop v_ByteArray= 0;
static oop v_String= 0;
static oop v_ImmutableString= 0;
static oop v_Symbol= 0;
static oop v_true= 0;
static oop v_false= 0;
static double d_11= 0.0;
static double d_12= 0.0;
static double d_13= 3.14159265358979323846264338327950288419716939937510;
#include <math.h>
static oop Float__isFloat(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("isFloat", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(27);
  _1= v_true;
  _leave();
  return _1;
  _leave();
 }
static oop Object__isFloat(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("isFloat", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(28);
  _1= v_false;
  _leave();
  return _1;
  _leave();
 }
static oop Float___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("_sizeof", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(30);
 {
# define self ((struct t_Float *)v_self)
 return (oop)sizeof(double); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__value_5f_(oop v__closure, oop v_stateful_self, oop v_self, oop v__fp)
 {
  _enter("value_:", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(32);
  _1= v_self;
  _line(34);
  _1=_send(s_new, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)
 memcpy(self, v__fp, sizeof(double)); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__copy(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("copy", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  _line(38);
  _1= v_self;
  _line(38);
  _1=_send(s_new, _1);
  _2= v_self;
  _line(38);
  _1=_send(s_value_5f_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop Float__asFloat(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("asFloat", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(40);
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__asFloat(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("asFloat", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  _line(41);
  _1= v_Float;
  _line(41);
  _1=_send(s_new, _1);
  _2= v_self;
  _line(41);
  _2=_send(s__5fintegerValue, _2);
  _line(41);
  _1=_send(s_setIntegerValue_5f_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop Float__asInteger(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("asInteger", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(42);
  _1= v_self;
  _line(42);
  _1=_send(s_truncated, _1);
  _leave();
  return _1;
  _leave();
 }
static oop Float__hash(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("hash", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(44);
 {
# define self ((struct t_Float *)v_self)

    int hash;
    hash   = ((unsigned int *)self)[0];
    hash  += ((unsigned int *)self)[1];
    hash >>= 7;
    hash  &= 0x01FFFFFE;
    return (oop)(hash | 1);

# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__setIntegerValue_5f_(oop v__closure, oop v_stateful_self, oop v_self, oop v__integer)
 {
  _enter("setIntegerValue_:", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(54);
 {
# define self ((struct t_Float *)v_self)

    double d= (double)(long)v__integer;
    memcpy(self, &d, sizeof(d));

# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___2b(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("+", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(60);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(62);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l1;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_1;
  _line(62);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l1:;
  _1= v_self;
  _line(63);
  _1=_send(s_copy, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      a += b;
      memcpy(v_self, &a, sizeof(double));
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___2d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("-", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(73);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(75);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l2;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_2;
  _line(75);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l2:;
  _1= v_self;
  _line(76);
  _1=_send(s_copy, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      a -= b;
      memcpy(v_self, &a, sizeof(double));
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___2a(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("*", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(86);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(88);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l3;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_3;
  _line(88);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l3:;
  _1= v_self;
  _line(89);
  _1=_send(s_copy, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      a *= b;
      memcpy(v_self, &a, sizeof(double));
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___2f(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("/", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(99);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(101);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l4;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_4;
  _line(101);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l4:;
  _1= v_self;
  _line(102);
  _1=_send(s_copy, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      a /= b;
      memcpy(v_self, &a, sizeof(double));
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___3c(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("<", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(112);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(114);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l5;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_5;
  _line(114);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l5:;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      return a < b ? v_Object : 0;
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___3c_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("<=", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(123);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(125);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l6;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_6;
  _line(125);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l6:;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      return a <= b ? v_Object : 0;
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("=", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(134);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(136);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l7;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_7;
  _line(136);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l7:;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      return a == b ? v_Object : 0;
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___7e_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("~=", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(145);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(147);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l8;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_8;
  _line(147);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l8:;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      return a != b ? v_Object : 0;
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___3e_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter(">=", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(156);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(158);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l9;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_9;
  _line(158);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l9:;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      return a >= b ? v_Object : 0;
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float___3e(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter(">", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(167);
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(169);
  _2=_send(s_isFloat, _2);
  if (_2) goto _l10;
 {
  _1= v_aNumber;
  _2= v_self;
  _3= l_10;
  _line(169);
  _1=_send(s_adaptToFloat_andSend_, _1, _2, _3);
  _leave();
  return _1;
 }
 _l10:;
 {
# define self ((struct t_Float *)v_self)

      double a, b;
      memcpy(&a, v_self,    sizeof(double));
      memcpy(&b, v_aNumber, sizeof(double));
      return a > b ? v_Object : 0;
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__truncated(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("truncated", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(178);
 {
# define self ((struct t_Float *)v_self)

    double l, i;
    memcpy(&l, self, sizeof(l));
    modf(l, &i);
    return (oop)((long)i << 1 | 1);

# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__fractionPart(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("fractionPart", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(186);
  _1= v_self;
  _line(188);
  _1=_send(s_copy, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)

	double rcvr, frac, trunc;
	memcpy(&rcvr, v_self, sizeof(double));
	frac= modf(rcvr, &trunc);
	memcpy(v_self, &frac, sizeof(double));
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__exponent(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("exponent", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(197);
 {
# define self ((struct t_Float *)v_self)

    double rcvr, frac;
    int pwr;
    memcpy(&rcvr, v_self, sizeof(double));
    frac= frexp(rcvr, &pwr);
    return (oop)(((pwr - 1) << 1) | 1);

# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__sin(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("sin", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(206);
  _1= v_self;
  _line(208);
  _1=_send(s_copy, _1);
  v_self= _1;
  v_stateful_self= _1;
 {
# define self ((struct t_Float *)v_self)

	double d;
	memcpy(&d, v_self, sizeof(double));
	d= sin(d);
	memcpy(v_self, &d, sizeof(double));
    
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Float__abs(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("abs", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  _line(217);
  /* ifTrue:ifFalse: */
  _1= v_self;
  _2= l_11;
  if (1 & (int)_1 & (int)_2) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
  if (!_1) goto _l11;
 {
  _1= l_11;
  _2= v_self;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_1 & (int)_2) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2d, _1, _2);
  }
 }
  goto _l12;
 _l11:;
 {
  _1= v_self;
 }
 _l12:;
  _leave();
  return _1;
  _leave();
 }
static oop Float__negated(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("negated", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  _line(224);
  _1= l_12;
  _2= v_self;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_1 & (int)_2) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2d, _1, _2);
  }
  _leave();
  return _1;
  _leave();
 }
static oop Float__adaptToInteger_andSend_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_operator)
 {
  _enter("adaptToInteger:andSend:", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(229);
  _1= v_anInteger;
  _line(231);
  _1=_send(s_asFloat, _1);
  _2= v_operator;
  _3= v_self;
  _line(231);
  _1=_send(s_perform_with_, _1, _2, _3);
  _leave();
  return _1;
  _leave();
 }
static oop Float__pi(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("pi", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(234);
  _1= l_13;
  _leave();
  return _1;
  _leave();
 }
static oop Float__print(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("print", "Float", "/home/saintiss/source/svn/stIdst_278/object/st80/Float.st");
  oop _1= 0;
  _line(236);
 {
# define self ((struct t_Float *)v_self)

    double d;
    memcpy(&d, self, sizeof(d));
/*  return (oop)(fprintf(stdout, "%f", d) << 1 | 1);  */
    return (oop)(fprintf(stdout, "%.16g", d) << 1 | 1);

# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }

void __id__init__Float(void)
{
  if (_local_object) return;
  { 
    dlhandle_t global= dlopen(0, RTLD_LAZY);
    _local_object= *(oop *)dlsym(global, "_libid_object");
    _local_param= dlsym(global, "_libid_param");
    _local_intern= dlsym(global, "_libid_intern");
    _local_proto= dlsym(global, "_libid_proto");
    _local_import= dlsym(global, "_libid_import");
    _local_export= dlsym(global, "_libid_export");
    _local_method= dlsym(global, "_libid_method");
    _local_alloc= dlsym(global, "_libid_alloc");
    _local_palloc= dlsym(global, "_libid_palloc");
    _local_balloc= dlsym(global, "_libid_balloc");
    _local_bind= dlsym(global, "_libid_bind");
    _local_nlreturn= dlsym(global, "_libid_nlreturn");
    _local_nlresult= dlsym(global, "_libid_nlresult");
    _local_enter= dlsym(global, "_libid_enter");
    _local_line= dlsym(global, "_libid_line");
    _local_leave= dlsym(global, "_libid_leave");
    _local_backtrace= dlsym(global, "_libid_backtrace");
    _local_tag_vtable= dlsym(global, "_libid_tag_vtable");
    _local_nil_vtable= dlsym(global, "_libid_nil_vtable");
    _local_gc_addRoots= dlsym(global, "GC_add_roots");
    _local_gc_unregisterDisappearingLink= dlsym(global, "GC_unregister_disappearing_link");
    _local_gc_generalRegisterDisappearingLink= dlsym(global, "GC_general_register_disappearing_link");
    _local_gc_gcollect= dlsym(global, "GC_gcollect");
    dlclose(global);
  }
# define GC_add_roots _local_gc_addRoots
  GC_INIT();
  {
    struct _Selector *s= 0;
    for (s= _Selectors;  s->name;  ++s)
      *s->addr= _selector(s->name);
  }
  _enter("__id__init__", "<initialisation>", "Float.st");

  _send(s__5fimport_, _local_object, "Number", "__id__init__Number");
  _send(s__5fimport_, _local_object, "Magnitude", "__id__init__Magnitude");
  _send(s__5fimport_, _local_object, "Object", "__id__init__Object");
  _send(s__5fimport_, _local_object, "_object", "__id__init___5fobject");
  v__object= _id_import("_object");
  v_Object= _id_import("Object");
  v_UndefinedObject= _id_import("UndefinedObject");
  v_StaticBlockClosure= _id_import("StaticBlockClosure");
  v_Magnitude= _id_import("Magnitude");
  v_Number= _id_import("Number");
  v_Float= _id_import("Float");
  v_Integer= _id_import("Integer");
  v_SmallInteger= _id_import("SmallInteger");
  v_LargePositiveInteger= _id_import("LargePositiveInteger");
  v_Collection= _id_import("Collection");
  v_SequenceableCollection= _id_import("SequenceableCollection");
  v_ArrayedCollection= _id_import("ArrayedCollection");
  v_Array= _id_import("Array");
  v_WordArray= _id_import("WordArray");
  v_ByteArray= _id_import("ByteArray");
  v_String= _id_import("String");
  v_ImmutableString= _id_import("ImmutableString");
  v_Symbol= _id_import("Symbol");
  v_true= _id_import("true");
  v_false= _id_import("false");
  _send(s__5fimport_, _local_object, "BlockClosure", "__id__init__BlockClosure");
  _send(s__5fimport_, _local_object, "SmallInteger", "__id__init__SmallInteger");
  _send(s__5fimport_, _local_object, "Integer", "__id__init__Integer");
  _send(s__5fimport_, _local_object, "Array", "__id__init__Array");
  _send(s__5fimport_, _local_object, "ArrayedCollection", "__id__init__ArrayedCollection");
  _send(s__5fimport_, _local_object, "SequenceableCollection", "__id__init__SequenceableCollection");
  _send(s__5fimport_, _local_object, "Collection", "__id__init__Collection");
  _send(s__5fimport_, _local_object, "Character", "__id__init__Character");
  _send(s__5fimport_, _local_object, "String", "__id__init__String");
  _send(s__5fimport_, _local_object, "ByteArray", "__id__init__ByteArray");
  _send(s__5fimport_, _local_object, "WordArray", "__id__init__WordArray");
  _method(v_Float, s_isFloat, Float__isFloat);
  _method(v_Object, s_isFloat, Object__isFloat);
  _method(v_Float, s__5fsizeof, Float___5fsizeof);
  _method(v_Float, s_value_5f_, Float__value_5f_);
  _method(v_Float, s_copy, Float__copy);
  _method(v_Float, s_asFloat, Float__asFloat);
  _method(v_SmallInteger, s_asFloat, SmallInteger__asFloat);
  _method(v_Float, s_asInteger, Float__asInteger);
  _method(v_Float, s_hash, Float__hash);
  _method(v_Float, s_setIntegerValue_5f_, Float__setIntegerValue_5f_);
  l_1= _send(s_size_5f_value_5f_, v_Symbol, 1, "+");
  _method(v_Float, s__2b, Float___2b);
  l_2= _send(s_size_5f_value_5f_, v_Symbol, 1, "-");
  _method(v_Float, s__2d, Float___2d);
  l_3= _send(s_size_5f_value_5f_, v_Symbol, 1, "*");
  _method(v_Float, s__2a, Float___2a);
  l_4= _send(s_size_5f_value_5f_, v_Symbol, 1, "/");
  _method(v_Float, s__2f, Float___2f);
  l_5= _send(s_size_5f_value_5f_, v_Symbol, 1, "<");
  _method(v_Float, s__3c, Float___3c);
  l_6= _send(s_size_5f_value_5f_, v_Symbol, 2, "<=");
  _method(v_Float, s__3c_3d, Float___3c_3d);
  l_7= _send(s_size_5f_value_5f_, v_Symbol, 1, "=");
  _method(v_Float, s__3d, Float___3d);
  l_8= _send(s_size_5f_value_5f_, v_Symbol, 2, "~=");
  _method(v_Float, s__7e_3d, Float___7e_3d);
  l_9= _send(s_size_5f_value_5f_, v_Symbol, 2, ">=");
  _method(v_Float, s__3e_3d, Float___3e_3d);
  l_10= _send(s_size_5f_value_5f_, v_Symbol, 1, ">");
  _method(v_Float, s__3e, Float___3e);
  _method(v_Float, s_truncated, Float__truncated);
  _method(v_Float, s_fractionPart, Float__fractionPart);
  _method(v_Float, s_exponent, Float__exponent);
  _method(v_Float, s_sin, Float__sin);
  l_11= _send(s_value_5f_, v_Float, &d_11);
  _method(v_Float, s_abs, Float__abs);
  l_12= _send(s_value_5f_, v_Float, &d_12);
  _method(v_Float, s_negated, Float__negated);
  _method(v_Float, s_adaptToInteger_andSend_, Float__adaptToInteger_andSend_);
  l_13= _send(s_value_5f_, v_Float, &d_13);
  _method(v_Float, s_pi, Float__pi);
  _method(v_Float, s_print, Float__print);
  _leave();
}
