/* generated by Id 1.1 at ,$ */ /* with the command: -I../stage1/ -c Float.st -o ../stage2/Float.o.c */ #include static struct __libid *_libid= 0; #ifdef ID_DEBUG # define _enter(info) void *__id_debug= _libid->enter(info) # define _line(lno) _libid->line(lno) # define _leave() _libid->leave(__id_debug) # define _backtrace() _libid->backtrace() #else # define _enter(info) (void)info # define _line(lno) # define _leave() # define _backtrace() "(no debugging information)\n" #endif #define _return _leave(); return #define _sendv(MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (RCV) }; \ ((_imp_t)(_libid->bindv(&_s)))(&_s, _s.receiver, _s.receiver, ##ARG); \ }) #define _superv(TYP, MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (TYP) }; \ _imp_t _imp= _libid->bindv(&_s); \ _s.receiver= (RCV); \ _imp(&_s, _s.receiver, _s.receiver, ##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_12= 0; static oop l_14= 0; static oop l_16= 0; static oop l_18= 0; static oop l_20= 0; static oop l_22= 0; static oop l_24= 0; static oop l_26= 0; static oop l_28= 0; static oop l_30= 0; static oop l_36= 0; static oop l_38= 0; static oop l_41= 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_36= 0.0; static double d_38= 0.0; static double d_41= 3.14159265358979323846264338327950288419716939937510; #include static struct __methodinfo __info1= { "isFloat", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 27, 28, 0 }; static oop Float__isFloat(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info1); oop _1= 0; _line(27); _1= v_true; _leave(); return _1; _leave(); } static struct __methodinfo __info2= { "isFloat", "Object", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 28, 30, &__info1 }; static oop Object__isFloat(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info2); oop _1= 0; _line(28); _1= v_false; _leave(); return _1; _leave(); } static struct __methodinfo __info3= { "_sizeof", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 30, 32, &__info2 }; static oop Float___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info3); oop _1= 0; _line(30); { # define self ((struct t_Float *)v_self) return (oop)(long)sizeof(double); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info4= { "value_:", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 32, 38, &__info3 }; static oop Float__value_5f_(oop v__closure, oop v_stateful_self, oop v_self, oop v__fp) { _enter(&__info4); oop _1= 0; _line(32); _1= v_self; _line(34); _1=_sendv(s_new, 1, _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 struct __methodinfo __info5= { "copy", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 38, 40, &__info4 }; static oop Float__copy(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info5); oop _1= 0; oop _2= 0; _line(38); _1= v_self; _line(38); _1=_sendv(s_new, 1, _1); _2= v_self; _line(38); _1=_sendv(s_value_5f_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info6= { "asFloat", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 40, 41, &__info5 }; static oop Float__asFloat(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info6); oop _1= 0; _line(40); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info7= { "asFloat", "SmallInteger", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 41, 42, &__info6 }; static oop SmallInteger__asFloat(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info7); oop _1= 0; oop _2= 0; _line(41); _1= v_Float; _line(41); _1=_sendv(s_new, 1, _1); _2= v_self; _line(41); _2=_sendv(s__5fintegerValue, 1, _2); _line(41); _1=_sendv(s_setIntegerValue_5f_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info8= { "asInteger", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 42, 44, &__info7 }; static oop Float__asInteger(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info8); oop _1= 0; _line(42); _1= v_self; _line(42); _1=_sendv(s_truncated, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info9= { "hash", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 44, 54, &__info8 }; static oop Float__hash(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info9); 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)(long)(hash | 1); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info10= { "setIntegerValue_:", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 54, 60, &__info9 }; static oop Float__setIntegerValue_5f_(oop v__closure, oop v_stateful_self, oop v_self, oop v__integer) { _enter(&__info10); 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 struct __methodinfo __info11= { "+", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 60, 73, &__info10 }; static oop Float___2b(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info11); oop _1= 0; oop _2= 0; oop _3= 0; _line(60); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(62); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l1; { _1= v_aNumber; _2= v_self; _3= l_12; _line(62); _1=_sendv(s_adaptToFloat_andSend_, 3, _1, _2, _3); _leave(); return _1; } _l1:; _1= v_self; _line(63); _1=_sendv(s_copy, 1, _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 struct __methodinfo __info13= { "-", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 73, 86, &__info11 }; static oop Float___2d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info13); oop _1= 0; oop _2= 0; oop _3= 0; _line(73); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(75); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l2; { _1= v_aNumber; _2= v_self; _3= l_14; _line(75); _1=_sendv(s_adaptToFloat_andSend_, 3, _1, _2, _3); _leave(); return _1; } _l2:; _1= v_self; _line(76); _1=_sendv(s_copy, 1, _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 struct __methodinfo __info15= { "*", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 86, 99, &__info13 }; static oop Float___2a(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info15); oop _1= 0; oop _2= 0; oop _3= 0; _line(86); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(88); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l3; { _1= v_aNumber; _2= v_self; _3= l_16; _line(88); _1=_sendv(s_adaptToFloat_andSend_, 3, _1, _2, _3); _leave(); return _1; } _l3:; _1= v_self; _line(89); _1=_sendv(s_copy, 1, _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 struct __methodinfo __info17= { "/", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 99, 112, &__info15 }; static oop Float___2f(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info17); oop _1= 0; oop _2= 0; oop _3= 0; _line(99); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(101); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l4; { _1= v_aNumber; _2= v_self; _3= l_18; _line(101); _1=_sendv(s_adaptToFloat_andSend_, 3, _1, _2, _3); _leave(); return _1; } _l4:; _1= v_self; _line(102); _1=_sendv(s_copy, 1, _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 struct __methodinfo __info19= { "<", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 112, 123, &__info17 }; static oop Float___3c(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info19); oop _1= 0; oop _2= 0; oop _3= 0; _line(112); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(114); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l5; { _1= v_aNumber; _2= v_self; _3= l_20; _line(114); _1=_sendv(s_adaptToFloat_andSend_, 3, _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 struct __methodinfo __info21= { "<=", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 123, 134, &__info19 }; static oop Float___3c_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info21); oop _1= 0; oop _2= 0; oop _3= 0; _line(123); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(125); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l6; { _1= v_aNumber; _2= v_self; _3= l_22; _line(125); _1=_sendv(s_adaptToFloat_andSend_, 3, _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 struct __methodinfo __info23= { "=", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 134, 145, &__info21 }; static oop Float___3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info23); oop _1= 0; oop _2= 0; oop _3= 0; _line(134); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(136); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l7; { _1= v_aNumber; _2= v_self; _3= l_24; _line(136); _1=_sendv(s_adaptToFloat_andSend_, 3, _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 struct __methodinfo __info25= { "~=", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 145, 156, &__info23 }; static oop Float___7e_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info25); oop _1= 0; oop _2= 0; oop _3= 0; _line(145); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(147); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l8; { _1= v_aNumber; _2= v_self; _3= l_26; _line(147); _1=_sendv(s_adaptToFloat_andSend_, 3, _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 struct __methodinfo __info27= { ">=", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 156, 167, &__info25 }; static oop Float___3e_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info27); oop _1= 0; oop _2= 0; oop _3= 0; _line(156); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(158); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l9; { _1= v_aNumber; _2= v_self; _3= l_28; _line(158); _1=_sendv(s_adaptToFloat_andSend_, 3, _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 struct __methodinfo __info29= { ">", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 167, 178, &__info27 }; static oop Float___3e(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info29); oop _1= 0; oop _2= 0; oop _3= 0; _line(167); /* ifFalse: */ _1= 0; _2= v_aNumber; _line(169); _2=_sendv(s_isFloat, 1, _2); if (_2) goto _l10; { _1= v_aNumber; _2= v_self; _3= l_30; _line(169); _1=_sendv(s_adaptToFloat_andSend_, 3, _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 struct __methodinfo __info31= { "truncated", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 178, 186, &__info29 }; static oop Float__truncated(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info31); 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 struct __methodinfo __info32= { "fractionPart", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 186, 197, &__info31 }; static oop Float__fractionPart(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info32); oop _1= 0; _line(186); _1= v_self; _line(188); _1=_sendv(s_copy, 1, _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 struct __methodinfo __info33= { "exponent", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 197, 206, &__info32 }; static oop Float__exponent(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info33); 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)(long)(((pwr - 1) << 1) | 1); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info34= { "sin", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 206, 217, &__info33 }; static oop Float__sin(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info34); oop _1= 0; _line(206); _1= v_self; _line(208); _1=_sendv(s_copy, 1, _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 struct __methodinfo __info35= { "abs", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 217, 224, &__info34 }; static oop Float__abs(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info35); oop _1= 0; oop _2= 0; _line(217); /* ifTrue:ifFalse: */ _1= v_self; _2= l_36; if (1 & (long)_1 & (long)_2) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); if (!_1) goto _l11; { _1= l_36; _2= v_self; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } goto _l12; _l11:; { _1= v_self; } _l12:; _leave(); return _1; _leave(); } static struct __methodinfo __info37= { "negated", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 224, 229, &__info35 }; static oop Float__negated(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info37); oop _1= 0; oop _2= 0; _line(224); _1= l_38; _2= v_self; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } _leave(); return _1; _leave(); } static struct __methodinfo __info39= { "adaptToInteger:andSend:", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 229, 234, &__info37 }; static oop Float__adaptToInteger_andSend_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_operator) { _enter(&__info39); oop _1= 0; oop _2= 0; oop _3= 0; _line(229); _1= v_anInteger; _line(231); _1=_sendv(s_asFloat, 1, _1); _2= v_operator; _3= v_self; _line(231); _1=_sendv(s_perform_with_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info40= { "pi", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 234, 236, &__info39 }; static oop Float__pi(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info40); oop _1= 0; _line(234); _1= l_41; _leave(); return _1; _leave(); } static struct __methodinfo __info42= { "print", "Float", "/Users/piumarta/src/idst/object/st80/Float.st", 0, 236, 243, &__info40 }; static oop Float__print(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info42); oop _1= 0; _line(236); { # define self ((struct t_Float *)v_self) double d; memcpy(&d, self, sizeof(d)); /* return (oop)(long)(fprintf(stdout, "%f", d) << 1 | 1); */ return (oop)(long)(fprintf(stdout, "%.16g", d) << 1 | 1); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info= { "__id__init__", "", "Float.st", 0, 0, 0, &__info42 }; void __id__init__Float(struct __libid *__libid) { if (_libid) return; if (!(_libid= __libid)) { fprintf(stderr, "init _libid %p\n", __libid); abort(); } # define GC_add_roots _libid->gc_addRoots GC_INIT(); { struct _Selector *s= 0; for (s= _Selectors; s->name; ++s) *s->addr= _libid->intern(s->name); } _enter(&__info); _libid->infos(&__info, &__info1); _sendv(s__5fimport_, 3, _libid->_object, "Number", "__id__init__Number"); v__object= _libid->import("_object"); v_Object= _libid->import("Object"); v_UndefinedObject= _libid->import("UndefinedObject"); v_StaticBlockClosure= _libid->import("StaticBlockClosure"); v_Magnitude= _libid->import("Magnitude"); v_Number= _libid->import("Number"); v_Float= _libid->import("Float"); v_Integer= _libid->import("Integer"); v_SmallInteger= _libid->import("SmallInteger"); v_LargePositiveInteger= _libid->import("LargePositiveInteger"); v_Collection= _libid->import("Collection"); v_SequenceableCollection= _libid->import("SequenceableCollection"); v_ArrayedCollection= _libid->import("ArrayedCollection"); v_Array= _libid->import("Array"); v_WordArray= _libid->import("WordArray"); v_ByteArray= _libid->import("ByteArray"); v_String= _libid->import("String"); v_ImmutableString= _libid->import("ImmutableString"); v_Symbol= _libid->import("Symbol"); v_true= _libid->import("true"); v_false= _libid->import("false"); _libid->method(v_Float, s_isFloat, (_imp_t)Float__isFloat); _libid->method(v_Object, s_isFloat, (_imp_t)Object__isFloat); _libid->method(v_Float, s__5fsizeof, (_imp_t)Float___5fsizeof); _libid->method(v_Float, s_value_5f_, (_imp_t)Float__value_5f_); _libid->method(v_Float, s_copy, (_imp_t)Float__copy); _libid->method(v_Float, s_asFloat, (_imp_t)Float__asFloat); _libid->method(v_SmallInteger, s_asFloat, (_imp_t)SmallInteger__asFloat); _libid->method(v_Float, s_asInteger, (_imp_t)Float__asInteger); _libid->method(v_Float, s_hash, (_imp_t)Float__hash); _libid->method(v_Float, s_setIntegerValue_5f_, (_imp_t)Float__setIntegerValue_5f_); l_12= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "+"); _libid->method(v_Float, s__2b, (_imp_t)Float___2b); l_14= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "-"); _libid->method(v_Float, s__2d, (_imp_t)Float___2d); l_16= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "*"); _libid->method(v_Float, s__2a, (_imp_t)Float___2a); l_18= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "/"); _libid->method(v_Float, s__2f, (_imp_t)Float___2f); l_20= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "<"); _libid->method(v_Float, s__3c, (_imp_t)Float___3c); l_22= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 2, "<="); _libid->method(v_Float, s__3c_3d, (_imp_t)Float___3c_3d); l_24= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "="); _libid->method(v_Float, s__3d, (_imp_t)Float___3d); l_26= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 2, "~="); _libid->method(v_Float, s__7e_3d, (_imp_t)Float___7e_3d); l_28= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 2, ">="); _libid->method(v_Float, s__3e_3d, (_imp_t)Float___3e_3d); l_30= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, ">"); _libid->method(v_Float, s__3e, (_imp_t)Float___3e); _libid->method(v_Float, s_truncated, (_imp_t)Float__truncated); _libid->method(v_Float, s_fractionPart, (_imp_t)Float__fractionPart); _libid->method(v_Float, s_exponent, (_imp_t)Float__exponent); _libid->method(v_Float, s_sin, (_imp_t)Float__sin); l_36= _sendv(s_value_5f_, 2, v_Float, &d_36); _libid->method(v_Float, s_abs, (_imp_t)Float__abs); l_38= _sendv(s_value_5f_, 2, v_Float, &d_38); _libid->method(v_Float, s_negated, (_imp_t)Float__negated); _libid->method(v_Float, s_adaptToInteger_andSend_, (_imp_t)Float__adaptToInteger_andSend_); l_41= _sendv(s_value_5f_, 2, v_Float, &d_41); _libid->method(v_Float, s_pi, (_imp_t)Float__pi); _libid->method(v_Float, s_print, (_imp_t)Float__print); _leave(); }