Created
August 14, 2012 06:35
-
-
Save zeptometer/3346948 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* Compiler: ECL 12.7.1 */ | |
| /* Date: 2012/8/14 15:31 (yyyy/mm/dd) */ | |
| /* Machine: NT 5.0 x86 */ | |
| /* Source: e:/Documents/emacs-home/lisp/.quicklisp/dists/quicklisp/software/ieee-floats-20101006-darcs/ieee-floats.lisp */ | |
| #include <ecl/ecl-cmp.h> | |
| #include "E:/Documents/emacs-home/ieee-floats.h" | |
| /* local function MAKE-FLOAT-CONVERTERS */ | |
| /* optimize speed 3, debug 0, space 0, safety 2 */ | |
| static cl_object LC1make_float_converters(cl_object V1, cl_object V2) | |
| { VT2 VLEX2 CLSR2 STCK2 | |
| const cl_env_ptr cl_env_copy = ecl_process_env(); | |
| cl_object value0; | |
| ecl_cs_check(cl_env_copy,value0); | |
| { | |
| TTL: | |
| {cl_object V3; | |
| cl_object V4; /* ENCODER-NAME */ | |
| cl_object V5; /* DECODER-NAME */ | |
| cl_object V6; /* EXPONENT-BITS */ | |
| cl_object V7; /* SIGNIFICAND-BITS */ | |
| cl_object V8; /* SUPPORT-NAN-AND-INFINITY-P */ | |
| V3= ecl_cdr(V1); | |
| if(!(V3==ECL_NIL)){ | |
| goto L5;} | |
| si_dm_too_few_arguments(V1) /* DM-TOO-FEW-ARGUMENTS */; | |
| goto L3; | |
| L5:; | |
| goto L3; | |
| L3:; | |
| {cl_object V9; | |
| V9= ecl_car(V3); | |
| V3= ecl_cdr(V3); | |
| V4= V9; | |
| } | |
| if(!(V3==ECL_NIL)){ | |
| goto L13;} | |
| si_dm_too_few_arguments(V1) /* DM-TOO-FEW-ARGUMENTS */; | |
| goto L11; | |
| L13:; | |
| goto L11; | |
| L11:; | |
| {cl_object V9; | |
| V9= ecl_car(V3); | |
| V3= ecl_cdr(V3); | |
| V5= V9; | |
| } | |
| if(!(V3==ECL_NIL)){ | |
| goto L21;} | |
| si_dm_too_few_arguments(V1) /* DM-TOO-FEW-ARGUMENTS */; | |
| goto L19; | |
| L21:; | |
| goto L19; | |
| L19:; | |
| {cl_object V9; | |
| V9= ecl_car(V3); | |
| V3= ecl_cdr(V3); | |
| V6= V9; | |
| } | |
| if(!(V3==ECL_NIL)){ | |
| goto L29;} | |
| si_dm_too_few_arguments(V1) /* DM-TOO-FEW-ARGUMENTS */; | |
| goto L27; | |
| L29:; | |
| goto L27; | |
| L27:; | |
| {cl_object V9; | |
| V9= ecl_car(V3); | |
| V3= ecl_cdr(V3); | |
| V7= V9; | |
| } | |
| if(!(V3==ECL_NIL)){ | |
| goto L37;} | |
| si_dm_too_few_arguments(V1) /* DM-TOO-FEW-ARGUMENTS */; | |
| goto L35; | |
| L37:; | |
| goto L35; | |
| L35:; | |
| {cl_object V9; | |
| V9= ecl_car(V3); | |
| V3= ecl_cdr(V3); | |
| V8= V9; | |
| } | |
| if((V3)==ECL_NIL){ | |
| goto L44;} | |
| si_dm_too_many_arguments(V1) /* DM-TOO-MANY-ARGUMENTS */; | |
| goto L42; | |
| L44:; | |
| goto L42; | |
| L42:; | |
| {cl_object V9; /* TOTAL-BITS */ | |
| cl_object V10; /* EXPONENT-OFFSET */ | |
| cl_object V11; /* SIGN-PART */ | |
| cl_object V12; /* EXPONENT-PART */ | |
| cl_object V13; /* SIGNIFICAND-PART */ | |
| cl_object V14; /* MAX-EXPONENT */ | |
| T0= ecl_plus(ecl_make_fixnum(1),V6); | |
| V9= ecl_plus(T0,V7); | |
| T0= ecl_one_minus(V6); | |
| T1= ecl_expt(ecl_make_fixnum(2),T0); | |
| V10= ecl_one_minus(T1); | |
| T0= ecl_one_minus(V9); | |
| T1= cl_list(3,ECL_SYM("BYTE",162),ecl_make_fixnum(1),T0) /* LIST */; | |
| V11= cl_list(3,ECL_SYM("LDB",457),T1,VV[0]) /* LIST */; | |
| T0= cl_list(3,ECL_SYM("BYTE",162),V6,V7) /* LIST */; | |
| V12= cl_list(3,ECL_SYM("LDB",457),T0,VV[0]) /* LIST */; | |
| T0= cl_list(3,ECL_SYM("BYTE",162),V7,ecl_make_fixnum(0)) /* LIST */; | |
| V13= cl_list(3,ECL_SYM("LDB",457),T0,VV[0]) /* LIST */; | |
| T0= ecl_expt(ecl_make_fixnum(2),V6); | |
| V14= ecl_one_minus(T0); | |
| if((V8)!=ECL_NIL){ | |
| goto L54;} | |
| T0= VV[2]; | |
| goto L52; | |
| L54:; | |
| T0= ECL_NIL; | |
| goto L52; | |
| L52:; | |
| if((V8)==ECL_NIL){ | |
| goto L58;} | |
| T2= cl_list(4,ECL_SYM("VALUES",895),ecl_make_fixnum(0),ecl_make_fixnum(1),V14) /* LIST */; | |
| T3= cl_list(2,VV[4],T2) /* LIST */; | |
| T4= cl_list(4,ECL_SYM("VALUES",895),ecl_make_fixnum(0),ecl_make_fixnum(0),V14) /* LIST */; | |
| T5= cl_list(2,VV[5],T4) /* LIST */; | |
| T6= cl_list(4,ECL_SYM("VALUES",895),ecl_make_fixnum(1),ecl_make_fixnum(0),V14) /* LIST */; | |
| T7= cl_list(2,VV[6],T6) /* LIST */; | |
| T1= cl_list(3,T3,T5,T7) /* LIST */; | |
| goto L56; | |
| L58:; | |
| T1= ECL_NIL; | |
| goto L56; | |
| L56:; | |
| T2= cl_list(3,ECL_SYM("+",14),VV[11],V10) /* LIST */; | |
| T3= cl_list(2,VV[10],T2) /* LIST */; | |
| T4= cl_list(2,T3,VV[12]) /* LIST */; | |
| T5= ecl_expt(ecl_make_fixnum(2),V6); | |
| T6= cl_list(3,ECL_SYM("<",72),VV[10],T5) /* LIST */; | |
| T7= cl_list(3,ECL_SYM("UNLESS",883),T6,VV[13]) /* LIST */; | |
| T8= ecl_expt(ecl_make_fixnum(2),V7); | |
| T9= cl_list(3,ECL_SYM("*",18),T8,VV[16]) /* LIST */; | |
| T10= cl_list(2,ECL_SYM("ROUND",730),T9) /* LIST */; | |
| T11= cl_list(3,ECL_SYM("ASH",110),T10,VV[10]) /* LIST */; | |
| T12= cl_list(4,ECL_SYM("VALUES",895),VV[15],T11,ecl_make_fixnum(0)) /* LIST */; | |
| T13= ecl_expt(ecl_make_fixnum(2),V7); | |
| T14= cl_list(3,ECL_SYM("*",18),T13,VV[17]) /* LIST */; | |
| T15= cl_list(2,ECL_SYM("ROUND",730),T14) /* LIST */; | |
| T16= cl_list(4,ECL_SYM("VALUES",895),VV[15],T15,VV[10]) /* LIST */; | |
| T17= cl_list(4,ECL_SYM("IF",946),VV[14],T12,T16) /* LIST */; | |
| T18= cl_list(4,ECL_SYM("LET",477),T4,T7,T17) /* LIST */; | |
| T19= cl_list(4,ECL_SYM("MULTIPLE-VALUE-BIND",572),VV[8],VV[9],T18) /* LIST */; | |
| T20= cl_list(2,ECL_T,T19) /* LIST */; | |
| T21= cl_list(2,VV[7],T20) /* LIST */; | |
| T22= ecl_append(T1,T21); | |
| T23= CONS(ECL_SYM("COND",247),T22); | |
| T24= cl_list(2,ECL_SYM("UNSIGNED-BYTE",885),V9) /* LIST */; | |
| T25= cl_list(3,ECL_SYM("TYPE",869),T24,VV[0]) /* LIST */; | |
| T26= cl_list(2,ECL_SYM("DECLARE",274),T25) /* LIST */; | |
| T27= cl_list(7,ECL_SYM("SETF",750),V11,VV[15],V12,VV[10],V13,VV[16]) /* LIST */; | |
| T28= cl_list(5,ECL_SYM("LET",477),VV[18],T26,T27,VV[0]) /* LIST */; | |
| T29= cl_list(4,ECL_SYM("MULTIPLE-VALUE-BIND",572),VV[3],T23,T28) /* LIST */; | |
| T30= ecl_list1(T29); | |
| T31= ecl_append(T0,T30); | |
| T32= cl_listX(4,ECL_SYM("DEFUN",289),V4,VV[1],T31) /* LIST* */; | |
| T33= cl_list(2,ECL_SYM("UNSIGNED-BYTE",885),V9) /* LIST */; | |
| T34= cl_list(3,ECL_SYM("TYPE",869),T33,VV[0]) /* LIST */; | |
| T35= cl_list(2,ECL_SYM("DECLARE",274),T34) /* LIST */; | |
| T36= cl_list(2,VV[15],V11) /* LIST */; | |
| T37= cl_list(2,VV[10],V12) /* LIST */; | |
| T38= cl_list(2,VV[16],V13) /* LIST */; | |
| T39= cl_list(3,T36,T37,T38) /* LIST */; | |
| if((V8)==ECL_NIL){ | |
| goto L62;} | |
| T41= cl_list(3,ECL_SYM("=",74),VV[10],V14) /* LIST */; | |
| T42= cl_list(3,ECL_SYM("RETURN-FROM",725),V5,VV[20]) /* LIST */; | |
| T43= cl_list(3,ECL_SYM("WHEN",905),T41,T42) /* LIST */; | |
| T40= ecl_list1(T43); | |
| goto L60; | |
| L62:; | |
| T40= ECL_NIL; | |
| goto L60; | |
| L60:; | |
| T41= cl_list(3,ECL_SYM("BYTE",162),ecl_make_fixnum(1),V7) /* LIST */; | |
| T42= cl_list(3,ECL_SYM("LDB",457),T41,VV[16]) /* LIST */; | |
| T43= cl_list(3,ECL_SYM("SETF",750),T42,ecl_make_fixnum(1)) /* LIST */; | |
| T44= cl_list(4,ECL_SYM("IF",946),VV[21],VV[22],T43) /* LIST */; | |
| if(!(ecl_number_compare(V9,ecl_make_fixnum(32))>0)){ | |
| goto L66;} | |
| T45= VV[24]; | |
| goto L64; | |
| L66:; | |
| T45= VV[25]; | |
| goto L64; | |
| L64:; | |
| T46= cl_list(3,ECL_SYM("FLOAT",374),VV[16],T45) /* LIST */; | |
| T47= ecl_plus(V10,V7); | |
| T48= cl_list(3,ECL_SYM("-",17),VV[10],T47) /* LIST */; | |
| T49= cl_list(3,ECL_SYM("SCALE-FLOAT",737),T46,T48) /* LIST */; | |
| T50= cl_list(3,T44,VV[23],T49) /* LIST */; | |
| T51= ecl_append(T40,T50); | |
| T52= cl_listX(3,ECL_SYM("LET*",478),T39,T51) /* LIST* */; | |
| T53= cl_list(5,ECL_SYM("DEFUN",289),V5,VV[19],T35,T52) /* LIST */; | |
| value0=cl_list(3,ECL_SYM("PROGN",671),T32,T53) /* LIST */; | |
| return value0; | |
| } | |
| } | |
| }} | |
| /* function definition for ENCODE-FLOAT32 */ | |
| /* optimize speed 3, debug 0, space 0, safety 2 */ | |
| static cl_object L2encode_float32(cl_object V1) | |
| { VT3 VLEX3 CLSR3 STCK3 | |
| const cl_env_ptr cl_env_copy = ecl_process_env(); | |
| cl_object value0; | |
| ecl_cs_check(cl_env_copy,value0); | |
| { | |
| TTL: | |
| {bool V2; | |
| V2= floatp(V1); | |
| if (ecl_unlikely(!(V2))) | |
| FEwrong_type_argument(ECL_SYM("FLOAT",374),V1);} | |
| if(!(ecl_zerop(V1))){ | |
| goto L4;} | |
| cl_env_copy->nvalues=3; | |
| cl_env_copy->values[2]=ecl_make_fixnum(0); | |
| cl_env_copy->values[1]=ecl_make_fixnum(0); | |
| cl_env_copy->values[0]=ecl_make_fixnum(0); | |
| goto L2; | |
| L4:; | |
| cl_env_copy->values[0]=cl_decode_float(V1) /* DECODE-FLOAT */; | |
| { | |
| cl_object V3; /* SIGNIFICAND */ | |
| cl_object V4; /* EXPONENT */ | |
| cl_object V5; /* SIGN */ | |
| V3= cl_env_copy->values[0]; | |
| V4= cl_env_copy->values[1]; | |
| V5= cl_env_copy->values[2]; | |
| {cl_object V6; /* LET0 */ | |
| cl_fixnum V7; /* LET1 */ | |
| T0= ecl_one_minus(V4); | |
| V6= ecl_plus(T0,ecl_make_fixnum(127)); | |
| if(!(ecl_number_equalp(V5,VV[25]))){ | |
| goto L10;} | |
| V7= 0; | |
| goto L8; | |
| L10:; | |
| V7= 1; | |
| goto L8; | |
| L8:; | |
| if(ecl_number_compare(V6,ecl_make_fixnum(256))<0){ | |
| goto L14;} | |
| cl_error(2,VV[27],V1) /* ERROR */; | |
| goto L12; | |
| L14:; | |
| goto L12; | |
| L12:; | |
| if(!(ecl_number_compare(V6,ecl_make_fixnum(0))<0)){ | |
| goto L17;} | |
| T0= ecl_times(ecl_make_fixnum(8388608),V3); | |
| T1= ecl_round1(T0); | |
| T2= cl_ash(T1,V6) /* ASH */; | |
| cl_env_copy->nvalues=3; | |
| cl_env_copy->values[2]=ecl_make_fixnum(0); | |
| cl_env_copy->values[1]=T2; | |
| cl_env_copy->values[0]=ecl_make_fixnum(V7); | |
| goto L2; | |
| L17:; | |
| T0= ecl_times(V3,ecl_make_fixnum(2)); | |
| T1= ecl_one_minus(T0); | |
| T2= ecl_times(ecl_make_fixnum(8388608),T1); | |
| T3= ecl_round1(T2); | |
| cl_env_copy->nvalues=3; | |
| cl_env_copy->values[2]=V6; | |
| cl_env_copy->values[1]=T3; | |
| cl_env_copy->values[0]=ecl_make_fixnum(V7); | |
| goto L2; | |
| }} | |
| L2:; | |
| { | |
| cl_object V3; /* SIGN */ | |
| cl_object V4; /* SIGNIFICAND */ | |
| cl_object V5; /* EXPONENT */ | |
| V3= cl_env_copy->values[0]; | |
| V4= cl_env_copy->values[1]; | |
| V5= cl_env_copy->values[2]; | |
| {unsigned int V6; /* BITS */ | |
| V6= (unsigned int)(0); | |
| {cl_object V7; | |
| V7= cl_byte(ecl_make_fixnum(1),ecl_make_fixnum(31)) /* BYTE */; | |
| {cl_object V8; | |
| V8= cl_dpb(V3,V7,ecl_make_uint(V6)) /* DPB */; | |
| {cl_object V9; | |
| V9= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V8)||ECL_BIGNUMP(V8))){ | |
| goto L30;} | |
| V9= V8; | |
| if(!(ecl_number_compare(V9,VV[28])<=0)){ | |
| goto L35;} | |
| T0= ecl_make_bool(ecl_number_compare(V9,ecl_make_fixnum(0))>=0); | |
| goto L27; | |
| L35:; | |
| T0= ECL_NIL; | |
| goto L27; | |
| L30:; | |
| T0= ECL_NIL; | |
| goto L27; | |
| } | |
| L27:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[29],V8); | |
| V6= ecl_to_uint(V8); | |
| } | |
| } | |
| {cl_object V7; | |
| V7= cl_byte(ecl_make_fixnum(8),ecl_make_fixnum(23)) /* BYTE */; | |
| {cl_object V8; | |
| V8= cl_dpb(V5,V7,ecl_make_uint(V6)) /* DPB */; | |
| {cl_object V9; | |
| V9= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V8)||ECL_BIGNUMP(V8))){ | |
| goto L46;} | |
| V9= V8; | |
| if(!(ecl_number_compare(V9,VV[28])<=0)){ | |
| goto L51;} | |
| T0= ecl_make_bool(ecl_number_compare(V9,ecl_make_fixnum(0))>=0); | |
| goto L43; | |
| L51:; | |
| T0= ECL_NIL; | |
| goto L43; | |
| L46:; | |
| T0= ECL_NIL; | |
| goto L43; | |
| } | |
| L43:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[29],V8); | |
| V6= ecl_to_uint(V8); | |
| } | |
| } | |
| {cl_object V7; | |
| V7= cl_byte(ecl_make_fixnum(23),ecl_make_fixnum(0)) /* BYTE */; | |
| {cl_object V8; | |
| V8= cl_dpb(V4,V7,ecl_make_uint(V6)) /* DPB */; | |
| {cl_object V9; | |
| V9= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V8)||ECL_BIGNUMP(V8))){ | |
| goto L61;} | |
| V9= V8; | |
| if(!(ecl_number_compare(V9,VV[28])<=0)){ | |
| goto L66;} | |
| T0= ecl_make_bool(ecl_number_compare(V9,ecl_make_fixnum(0))>=0); | |
| goto L58; | |
| L66:; | |
| T0= ECL_NIL; | |
| goto L58; | |
| L61:; | |
| T0= ECL_NIL; | |
| goto L58; | |
| } | |
| L58:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[29],V8); | |
| V6= ecl_to_uint(V8); | |
| } | |
| } | |
| value0=ecl_make_uint(V6); cl_env_copy->nvalues=1; | |
| return value0; | |
| }} | |
| }} | |
| /* function definition for DECODE-FLOAT32 */ | |
| /* optimize speed 3, debug 0, space 0, safety 2 */ | |
| static cl_object L3decode_float32(cl_object V1) | |
| { VT4 VLEX4 CLSR4 STCK4 | |
| const cl_env_ptr cl_env_copy = ecl_process_env(); | |
| cl_object value0; | |
| ecl_cs_check(cl_env_copy,value0); | |
| { | |
| TTL: | |
| {cl_object V2; | |
| V2= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V1)||ECL_BIGNUMP(V1))){ | |
| goto L5;} | |
| V2= V1; | |
| if(!(ecl_number_compare(V2,VV[28])<=0)){ | |
| goto L10;} | |
| T0= ecl_make_bool(ecl_number_compare(V2,ecl_make_fixnum(0))>=0); | |
| goto L2; | |
| L10:; | |
| T0= ECL_NIL; | |
| goto L2; | |
| L5:; | |
| T0= ECL_NIL; | |
| goto L2; | |
| } | |
| L2:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[29],V1); | |
| {cl_object V2; /* SIGN */ | |
| cl_object V3; /* EXPONENT */ | |
| cl_object V4; /* SIGNIFICAND */ | |
| T0= cl_byte(ecl_make_fixnum(1),ecl_make_fixnum(31)) /* BYTE */; | |
| V2= cl_ldb(T0,V1) /* LDB */; | |
| T0= cl_byte(ecl_make_fixnum(8),ecl_make_fixnum(23)) /* BYTE */; | |
| V3= cl_ldb(T0,V1) /* LDB */; | |
| T0= cl_byte(ecl_make_fixnum(23),ecl_make_fixnum(0)) /* BYTE */; | |
| V4= cl_ldb(T0,V1) /* LDB */; | |
| if(!(ecl_zerop(V3))){ | |
| goto L17;} | |
| V3= ecl_make_fixnum(1); | |
| goto L15; | |
| L17:; | |
| {cl_object V5; | |
| V5= cl_byte(ecl_make_fixnum(1),ecl_make_fixnum(23)) /* BYTE */; | |
| {cl_object V6; | |
| V6= cl_dpb(ecl_make_fixnum(1),V5,V4) /* DPB */; | |
| V4= V6; | |
| goto L15; | |
| } | |
| } | |
| L15:; | |
| if(ecl_zerop(V2)){ | |
| goto L26;} | |
| V4= ecl_negate(V4); | |
| goto L24; | |
| L26:; | |
| goto L24; | |
| L24:; | |
| {float V5; | |
| V5= ecl_to_float(V4); | |
| T0= ecl_minus(V3,ecl_make_fixnum(150)); | |
| value0=cl_scale_float(ecl_make_single_float(V5),T0) /* SCALE-FLOAT */; | |
| return value0;} | |
| } | |
| }} | |
| /* function definition for ENCODE-FLOAT64 */ | |
| /* optimize speed 3, debug 0, space 0, safety 2 */ | |
| static cl_object L4encode_float64(cl_object V1) | |
| { VT5 VLEX5 CLSR5 STCK5 | |
| const cl_env_ptr cl_env_copy = ecl_process_env(); | |
| cl_object value0; | |
| ecl_cs_check(cl_env_copy,value0); | |
| { | |
| TTL: | |
| {bool V2; | |
| V2= floatp(V1); | |
| if (ecl_unlikely(!(V2))) | |
| FEwrong_type_argument(ECL_SYM("FLOAT",374),V1);} | |
| if(!(ecl_zerop(V1))){ | |
| goto L4;} | |
| cl_env_copy->nvalues=3; | |
| cl_env_copy->values[2]=ecl_make_fixnum(0); | |
| cl_env_copy->values[1]=ecl_make_fixnum(0); | |
| cl_env_copy->values[0]=ecl_make_fixnum(0); | |
| goto L2; | |
| L4:; | |
| cl_env_copy->values[0]=cl_decode_float(V1) /* DECODE-FLOAT */; | |
| { | |
| cl_object V3; /* SIGNIFICAND */ | |
| cl_object V4; /* EXPONENT */ | |
| cl_object V5; /* SIGN */ | |
| V3= cl_env_copy->values[0]; | |
| V4= cl_env_copy->values[1]; | |
| V5= cl_env_copy->values[2]; | |
| {cl_object V6; /* LET11 */ | |
| cl_fixnum V7; /* LET12 */ | |
| T0= ecl_one_minus(V4); | |
| V6= ecl_plus(T0,ecl_make_fixnum(1023)); | |
| if(!(ecl_number_equalp(V5,VV[25]))){ | |
| goto L10;} | |
| V7= 0; | |
| goto L8; | |
| L10:; | |
| V7= 1; | |
| goto L8; | |
| L8:; | |
| if(ecl_number_compare(V6,ecl_make_fixnum(2048))<0){ | |
| goto L14;} | |
| cl_error(2,VV[27],V1) /* ERROR */; | |
| goto L12; | |
| L14:; | |
| goto L12; | |
| L12:; | |
| if(!(ecl_number_compare(V6,ecl_make_fixnum(0))<0)){ | |
| goto L17;} | |
| T0= ecl_times(VV[32],V3); | |
| T1= ecl_round1(T0); | |
| T2= cl_ash(T1,V6) /* ASH */; | |
| cl_env_copy->nvalues=3; | |
| cl_env_copy->values[2]=ecl_make_fixnum(0); | |
| cl_env_copy->values[1]=T2; | |
| cl_env_copy->values[0]=ecl_make_fixnum(V7); | |
| goto L2; | |
| L17:; | |
| T0= ecl_times(V3,ecl_make_fixnum(2)); | |
| T1= ecl_one_minus(T0); | |
| T2= ecl_times(VV[32],T1); | |
| T3= ecl_round1(T2); | |
| cl_env_copy->nvalues=3; | |
| cl_env_copy->values[2]=V6; | |
| cl_env_copy->values[1]=T3; | |
| cl_env_copy->values[0]=ecl_make_fixnum(V7); | |
| goto L2; | |
| }} | |
| L2:; | |
| { | |
| cl_object V3; /* SIGN */ | |
| cl_object V4; /* SIGNIFICAND */ | |
| cl_object V5; /* EXPONENT */ | |
| V3= cl_env_copy->values[0]; | |
| V4= cl_env_copy->values[1]; | |
| V5= cl_env_copy->values[2]; | |
| {ecl_ulong_long_t V6; /* BITS */ | |
| V6= (ecl_ulong_long_t)(0); | |
| {cl_object V7; | |
| V7= cl_byte(ecl_make_fixnum(1),ecl_make_fixnum(63)) /* BYTE */; | |
| {cl_object V8; | |
| V8= cl_dpb(V3,V7,ecl_make_ulong_Long(V6)) /* DPB */; | |
| {cl_object V9; | |
| V9= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V8)||ECL_BIGNUMP(V8))){ | |
| goto L30;} | |
| V9= V8; | |
| if(!(ecl_number_compare(V9,VV[33])<=0)){ | |
| goto L35;} | |
| T0= ecl_make_bool(ecl_number_compare(V9,ecl_make_fixnum(0))>=0); | |
| goto L27; | |
| L35:; | |
| T0= ECL_NIL; | |
| goto L27; | |
| L30:; | |
| T0= ECL_NIL; | |
| goto L27; | |
| } | |
| L27:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[34],V8); | |
| V6= ecl_to_ulong_Long(V8); | |
| } | |
| } | |
| {cl_object V7; | |
| V7= cl_byte(ecl_make_fixnum(11),ecl_make_fixnum(52)) /* BYTE */; | |
| {cl_object V8; | |
| V8= cl_dpb(V5,V7,ecl_make_ulong_Long(V6)) /* DPB */; | |
| {cl_object V9; | |
| V9= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V8)||ECL_BIGNUMP(V8))){ | |
| goto L46;} | |
| V9= V8; | |
| if(!(ecl_number_compare(V9,VV[33])<=0)){ | |
| goto L51;} | |
| T0= ecl_make_bool(ecl_number_compare(V9,ecl_make_fixnum(0))>=0); | |
| goto L43; | |
| L51:; | |
| T0= ECL_NIL; | |
| goto L43; | |
| L46:; | |
| T0= ECL_NIL; | |
| goto L43; | |
| } | |
| L43:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[34],V8); | |
| V6= ecl_to_ulong_Long(V8); | |
| } | |
| } | |
| {cl_object V7; | |
| V7= cl_byte(ecl_make_fixnum(52),ecl_make_fixnum(0)) /* BYTE */; | |
| {cl_object V8; | |
| V8= cl_dpb(V4,V7,ecl_make_ulong_Long(V6)) /* DPB */; | |
| {cl_object V9; | |
| V9= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V8)||ECL_BIGNUMP(V8))){ | |
| goto L61;} | |
| V9= V8; | |
| if(!(ecl_number_compare(V9,VV[33])<=0)){ | |
| goto L66;} | |
| T0= ecl_make_bool(ecl_number_compare(V9,ecl_make_fixnum(0))>=0); | |
| goto L58; | |
| L66:; | |
| T0= ECL_NIL; | |
| goto L58; | |
| L61:; | |
| T0= ECL_NIL; | |
| goto L58; | |
| } | |
| L58:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[34],V8); | |
| V6= ecl_to_ulong_Long(V8); | |
| } | |
| } | |
| value0=ecl_make_ulong_Long(V6); cl_env_copy->nvalues=1; | |
| return value0; | |
| }} | |
| }} | |
| /* function definition for DECODE-FLOAT64 */ | |
| /* optimize speed 3, debug 0, space 0, safety 2 */ | |
| static cl_object L5decode_float64(cl_object V1) | |
| { VT6 VLEX6 CLSR6 STCK6 | |
| const cl_env_ptr cl_env_copy = ecl_process_env(); | |
| cl_object value0; | |
| ecl_cs_check(cl_env_copy,value0); | |
| { | |
| TTL: | |
| {cl_object V2; | |
| V2= ecl_make_fixnum(0); | |
| if(!(ECL_FIXNUMP(V1)||ECL_BIGNUMP(V1))){ | |
| goto L5;} | |
| V2= V1; | |
| if(!(ecl_number_compare(V2,VV[33])<=0)){ | |
| goto L10;} | |
| T0= ecl_make_bool(ecl_number_compare(V2,ecl_make_fixnum(0))>=0); | |
| goto L2; | |
| L10:; | |
| T0= ECL_NIL; | |
| goto L2; | |
| L5:; | |
| T0= ECL_NIL; | |
| goto L2; | |
| } | |
| L2:; | |
| if (ecl_unlikely(!((T0)!=ECL_NIL))) | |
| FEwrong_type_argument(VV[34],V1); | |
| {cl_object V2; /* SIGN */ | |
| cl_object V3; /* EXPONENT */ | |
| cl_object V4; /* SIGNIFICAND */ | |
| T0= cl_byte(ecl_make_fixnum(1),ecl_make_fixnum(63)) /* BYTE */; | |
| V2= cl_ldb(T0,V1) /* LDB */; | |
| T0= cl_byte(ecl_make_fixnum(11),ecl_make_fixnum(52)) /* BYTE */; | |
| V3= cl_ldb(T0,V1) /* LDB */; | |
| T0= cl_byte(ecl_make_fixnum(52),ecl_make_fixnum(0)) /* BYTE */; | |
| V4= cl_ldb(T0,V1) /* LDB */; | |
| if(!(ecl_zerop(V3))){ | |
| goto L17;} | |
| V3= ecl_make_fixnum(1); | |
| goto L15; | |
| L17:; | |
| {cl_object V5; | |
| V5= cl_byte(ecl_make_fixnum(1),ecl_make_fixnum(52)) /* BYTE */; | |
| {cl_object V6; | |
| V6= cl_dpb(ecl_make_fixnum(1),V5,V4) /* DPB */; | |
| V4= V6; | |
| goto L15; | |
| } | |
| } | |
| L15:; | |
| if(ecl_zerop(V2)){ | |
| goto L26;} | |
| V4= ecl_negate(V4); | |
| goto L24; | |
| L26:; | |
| goto L24; | |
| L24:; | |
| {double V5; | |
| V5= ecl_to_double(V4); | |
| T0= ecl_minus(V3,ecl_make_fixnum(1075)); | |
| value0=cl_scale_float(ecl_make_double_float(V5),T0) /* SCALE-FLOAT */; | |
| return value0;} | |
| } | |
| }} | |
| #include "E:/Documents/emacs-home/ieee-flaots.data" | |
| #ifdef __cplusplus | |
| extern "C" | |
| #endif | |
| ECL_DLLEXPORT void init_fas_CODE(cl_object flag) | |
| { VT1 VLEX1 CLSR1 STCK1 | |
| const cl_env_ptr cl_env_copy = ecl_process_env(); | |
| cl_object value0; | |
| cl_object *VVtemp; | |
| if (flag != OBJNULL){ | |
| Cblock=flag; | |
| #ifndef ECL_DYNAMIC_VV | |
| flag->cblock.data = VV; | |
| #endif | |
| flag->cblock.data_size = VM; | |
| flag->cblock.temp_data_size = VMtemp; | |
| flag->cblock.data_text = compiler_data_text; | |
| flag->cblock.data_text_size = compiler_data_text_size; | |
| flag->cblock.cfuns_size = compiler_cfuns_size; | |
| flag->cblock.cfuns = compiler_cfuns; | |
| flag->cblock.source = make_constant_base_string("e:/Documents/emacs-home/lisp/.quicklisp/dists/quicklisp/software/ieee-floats-20101006-darcs/ieee-floats.lisp"); | |
| return;} | |
| #ifdef ECL_DYNAMIC_VV | |
| VV = Cblock->cblock.data; | |
| #endif | |
| Cblock->cblock.data_text = "@EcLtAg:init_fas_CODE@"; | |
| VVtemp = Cblock->cblock.temp_data; | |
| ECL_DEFINE_SETF_FUNCTIONS | |
| ecl_function_dispatch(cl_env_copy,VV[37])(10,VVtemp[0],ECL_NIL,ECL_NIL,VVtemp[1],ECL_NIL,ECL_NIL,VVtemp[2],ECL_NIL,ECL_NIL,ECL_NIL) /* DODEFPACKAGE */; | |
| si_select_package(VVtemp[0]) /* SELECT-PACKAGE */; | |
| ecl_cmp_defmacro(VV[38]); /* MAKE-FLOAT-CONVERTERS */ | |
| si_set_documentation(3,VV[26],ECL_SYM("FUNCTION",396),VVtemp[3]) /* SET-DOCUMENTATION */; | |
| ecl_cmp_defun(VV[39]); /* ENCODE-FLOAT32 */ | |
| ecl_cmp_defun(VV[40]); /* DECODE-FLOAT32 */ | |
| ecl_cmp_defun(VV[41]); /* ENCODE-FLOAT64 */ | |
| ecl_cmp_defun(VV[42]); /* DECODE-FLOAT64 */ | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment