/* DO NOT EDIT THIS FILE - it is machine generated (JCGO_116) */ #ifdef JCGO_SEPARATED #define JCGO_116 #include "jcgortl.h" #include "Main.h" #endif #ifdef JCGO_116 #ifdef CHKALL_gnu_java_math_MPN #include "jcgobchk.h" #endif JCGO_NOSEP_INLINE jint CFASTCALL gnu_java_math_MPN__mul_1__IAIAII( jintArr dest, jintArr x, jint len, jint y ) { { jlong yword; jlong carry; yword= (jlong)y & JLONG_C(0xffffffff); carry= (jlong)0; { jint j; j= 0; for (; j < len; j++) { carry+= ((jlong)JCGO_ARRAY_IACCESS(x, j) & JLONG_C(0xffffffff)) * yword; JCGO_ARRAY_IACCESS(dest, j)= ((jint)carry); carry= JCGO_LUSHR_F(carry, (jint)32); } } return (jint)carry; } } JCGO_NOSEP_INLINE jint CFASTCALL gnu_java_math_MPN__add_1__IAIAII( jintArr dest, jintArr x, jint size, jint y ) { { jlong carry; carry= (jlong)y & JLONG_C(0xffffffff); { jint i; i= 0; for (; i < size; i++) { carry+= ((jlong)JCGO_ARRAY_IACCESS(x, i) & JLONG_C(0xffffffff)); JCGO_ARRAY_IACCESS(dest, i)= ((jint)carry); carry= JCGO_LSHR_F(carry, (jint)32); } } return (jint)carry; } } JCGO_NOSEP_INLINE jlong CFASTCALL gnu_java_math_MPN__udiv_qrnnd__JI( jlong N, jint D ) { { jlong q; jlong r; jlong a1; jlong a0; a1= JCGO_LUSHR_F(N, (jint)32); a0= N & JLONG_C(0xffffffff); if (D >= 0) { if (a1 < (((jlong)D - a1 - JCGO_LUSHR_F(a0, (jint)31)) & JLONG_C(0xffffffff))) { q= jcgo_ldiv(N, (jlong)D); r= jcgo_lmod(N, (jlong)D); } else { jlong c; c= N - JCGO_LSHL_F((jlong)D, (jint)31); q= jcgo_ldiv(c, (jlong)D); r= jcgo_lmod(c, (jlong)D); q+= (jlong)JCGO_SHL_F((jint)1, (jint)31); } } else { jlong b1; jlong c; b1= (jlong)JCGO_USHR_F(D, (jint)1); c= JCGO_LUSHR_F(N, (jint)1); if (a1 < b1 || JCGO_LSHR_F(a1, (jint)1) < b1) { if (a1 < b1) { q= jcgo_ldiv(c, b1); r= jcgo_lmod(c, b1); } else { c= ~(c - JCGO_LSHL_F(b1, (jint)32)); q= jcgo_ldiv(c, b1); r= jcgo_lmod(c, b1); q= (~q) & JLONG_C(0xffffffff); r= (b1 - (jlong)(jint)1) - r; } r= r * (jlong)(jint)2 + (a0 & (jlong)(jint)1); if ((D & (jint)1) != 0) { if (r >= q) { r= r - q; } else { if (q - r <= ((jlong)D & JLONG_C(0xffffffff))) { r= r - q + (jlong)D; q-= (jlong)(jint)1; } else { r= r - q + (jlong)D + (jlong)D; q-= (jlong)(jint)2; } } } } else { if (a0 >= ((jlong)(-D) & JLONG_C(0xffffffff))) { q= (jlong)(-(jint)1); r= a0 + (jlong)D; } else { q= (jlong)(-(jint)2); r= a0 + (jlong)D + (jlong)D; } } } return JCGO_LSHL_F(r, (jint)32) | (q & JLONG_C(0xffffffff)); } } JCGO_NOSEP_FRWINL jint CFASTCALL gnu_java_math_MPN__divmod_1__IAIAII( jintArr quotient, jintArr dividend, jint len, jint divisor ) { { jlong r; jint i; i= len - (jint)1; r= (jlong)(JCGO_ARRAY_IACCESS(dividend, i)); if ((r & JLONG_C(0xffffffff)) >= ((jlong)divisor & JLONG_C(0xffffffff))) { r= (jlong)0; } else { JCGO_ARRAY_IACCESS(quotient, i--)= 0; r= JCGO_LSHL_F(r, (jint)32); } for (; i >= 0; i--) { jint n0; n0= JCGO_ARRAY_NZIACCESS(dividend, i); r= (r & JLONG_C(0xffffffff00000000)) | ((jlong)n0 & JLONG_C(0xffffffff)); r= (gnu_java_math_MPN__udiv_qrnnd__JI( r, divisor)); JCGO_ARRAY_IACCESS(quotient, i)= ((jint)r); } return (jint)JCGO_LSHR_F(r, (jint)32); } } JCGO_NOSEP_STATIC jint CFASTCALL gnu_java_math_MPN__chars_per_word__I( jint radix ) { { if (radix < (jint)10) { if (radix < (jint)8) { if (radix <= (jint)2) { return (jint)32; } else { if (radix == (jint)3) { return (jint)20; } else { if (radix == (jint)4) { return (jint)16; } else { return (jint)18 - radix; } } } } else { return (jint)10; } } else { if (radix < (jint)12) { return (jint)9; } else { if (radix <= (jint)16) { return (jint)8; } else { if (radix <= (jint)23) { return (jint)7; } else { if (radix <= (jint)40) { return (jint)6; } else { if (radix <= (jint)256) { return (jint)4; } else { return (jint)1; } } } } } } } } JCGO_NOSEP_FRWINL jint CFASTCALL gnu_java_math_MPN__set_str__IABAII( jintArr dest, jbyteArr str, jint str_len, jint base ) { { jint size; size= 0; if ((base & (base - (jint)1)) == 0) { jint next_bitpos; jint bits_per_indigit; jint res_digit; next_bitpos= 0; bits_per_indigit= 0; { jint i; i= base; for (; (i= JCGO_SHR_F(i, (jint)1)) != 0;) { bits_per_indigit++; } } res_digit= 0; { jint i; i= str_len; for (; --i >= 0;) { jint inp_digit; inp_digit= (jint)(JCGO_ARRAY_BACCESS(str, i)); res_digit|= JCGO_SHL_F(inp_digit, next_bitpos); next_bitpos+= bits_per_indigit; if (next_bitpos >= (jint)32) { JCGO_ARRAY_IACCESS(dest, size++)= res_digit; next_bitpos-= (jint)32; res_digit= JCGO_SHR_F(inp_digit, (bits_per_indigit - next_bitpos)); } } } if (res_digit != 0) { JCGO_ARRAY_IACCESS(dest, size++)= res_digit; } } else { jint indigits_per_limb; jint str_pos; indigits_per_limb= (gnu_java_math_MPN__chars_per_word__I( base)); str_pos= 0; while (str_pos < str_len) { jint chunk; jint res_digit; jint big_base; jint cy_limb; chunk= str_len - str_pos; if (chunk > indigits_per_limb) { chunk= indigits_per_limb; } res_digit= (jint)(JCGO_ARRAY_BACCESS(str, str_pos++)); big_base= base; while (--chunk > 0) { res_digit= res_digit * base + JCGO_ARRAY_NZBACCESS(str, str_pos++); big_base*= base; } ; if (size == 0) { cy_limb= res_digit; } else { cy_limb= (gnu_java_math_MPN__mul_1__IAIAII( dest, dest, size, big_base)); cy_limb+= (gnu_java_math_MPN__add_1__IAIAII( dest, dest, size, res_digit)); } if (cy_limb != 0) { JCGO_ARRAY_IACCESS(dest, size++)= cy_limb; } } } return size; } } JCGO_NOSEP_STATIC gnu_java_math_MPN CFASTCALL gnu_java_math_MPN__this__( gnu_java_math_MPN This ) { { ; } return This; } JCGO_NOSEP_DATA CONST struct gnu_java_math_MPN_methods_s gnu_java_math_MPN_methods= { JCGO_CLASSREF_OF(gnu_java_math_MPN__class), JCGO_GCJDESCR_ZEROINIT OBJT_gnu_java_math_MPN, -(JCGO_OBJSIZE_T)sizeof(struct gnu_java_math_MPN_s), NULL, JCGO_CLINIT_INIT(0) gnu_java_math_MPN__this__, java_lang_Object__equals__Lo, java_lang_Object__hashCode__, java_lang_Object__toString__, java_lang_Object__finalize__ }; JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct gnu_java_math_MPN_class_s gnu_java_math_MPN__class JCGO_THRD_ATTRNONGC= { { &java_lang_Class_methods, JCGO_MON_INIT JCGO_OBJREF_OF(*(java_lang_Object)&gnu_java_math_MPN_methods), JCGO_STRREF_OF(jcgo_string1_Mpn), JCGO_CLASSREF_OF(java_lang_Object__class), ((jObjectArr)JCGO_OBJREF_OF(jcgo_array3_Object)), 0x1 } }; JCGO_NOSEP_DATA CONST jcgo_arrtype492_Mdclnt jcgo_array2_Mpn= { (jvtable)&jbyteArr_methods, JCGO_MON_INIT 17, { (jbyte)(jchar)103/*'g'*/, (jbyte)(jchar)110/*'n'*/, (jbyte)(jchar)117/*'u'*/, (jbyte)(jchar)46/*'.'*/, (jbyte)(jchar)106/*'j'*/, (jbyte)(jchar)97/*'a'*/, (jbyte)(jchar)118/*'v'*/, (jbyte)(jchar)97/*'a'*/, (jbyte)(jchar)46/*'.'*/, (jbyte)(jchar)109/*'m'*/, (jbyte)(jchar)97/*'a'*/, (jbyte)(jchar)116/*'t'*/, (jbyte)(jchar)104/*'h'*/, (jbyte)(jchar)46/*'.'*/, (jbyte)(jchar)77/*'M'*/, (jbyte)(jchar)80/*'P'*/, (jbyte)(jchar)78/*'N'*/ } }; JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct java_lang_String_s jcgo_string1_Mpn JCGO_THRD_ATTRNONGC= { &java_lang_String_methods, JCGO_MON_INIT (java_lang_Object)JCGO_OBJREF_OF(jcgo_array2_Mpn), 0, 17, (jint)0x9c2057f1L }; #ifdef CHKALL_gnu_java_math_MPN #include "jcgochke.h" #endif #endif