Lines Matching defs:len
82 #define MPD_NEW_STATIC(name, flags, exp, digits, len) \
85 len, MPD_MINALLOC_MAX, name##_data}
87 #define MPD_NEW_CONST(name, flags, exp, digits, len, alloc, initval) \
90 len, alloc, name##_data}
94 a->exp, a->digits, a->len, a->alloc, a->data}
225 assert(dec->len > 0);
226 return dec->data[dec->len-1];
453 mpd_uint_zero(mpd_uint_t *dest, mpd_size_t len)
457 for (i = 0; i < len; i++) {
615 /* Set digits. Assumption: result->len is initialized and > 0. */
620 result->digits = wdigits + (result->len-1) * MPD_RDIGITS;
781 result->len = 1;
789 mpd_ssize_t len, r;
791 _mpd_idiv_word(&len, &r, ctx->prec, MPD_RDIGITS);
792 len = (r == 0) ? len : len+1;
794 if (!mpd_qresize(result, len, status)) {
798 result->len = len;
801 --len;
803 result->data[len--] = mpd_pow10[r]-1;
805 for (; len >= 0; --len) {
806 result->data[len] = MPD_RADIX-1;
818 mpd_ssize_t len, r;
820 if (result->len > 0 && result->digits > ctx->prec) {
821 _mpd_idiv_word(&len, &r, ctx->prec, MPD_RDIGITS);
822 len = (r == 0) ? len : len+1;
825 result->data[len-1] %= mpd_pow10[r];
828 len = _mpd_real_size(result->data, len);
830 mpd_qresize(result, len, &dummy);
831 result->len = len;
848 mpd_ssize_t len, r;
851 if (result->len > 0 && result->digits > prec) {
854 result->len = result->digits = 0;
857 _mpd_idiv_word(&len, &r, prec, MPD_RDIGITS);
858 len = (r == 0) ? len : len+1;
861 result->data[len-1] %= mpd_pow10[r];
864 len = _mpd_real_size(result->data, len);
866 mpd_qresize(result, len, &dummy);
867 result->len = len;
871 result->len = result->digits = 0;
897 *lo = dec->data[dec->len-1];
901 else if (dec->len > 1) {
904 tmp = dec->data[dec->len-2] / mpd_pow10[MPD_RDIGITS-(n-r)];
933 for (i=0; i < dec->len; ++i) {
991 if (_mpd_isallzero(dec->data, dec->len-1)) {
1018 if (_mpd_isallnine(dec->data, dec->len-1)) {
1059 result->len = (result->data[1] == 0) ? 1 : 2;
1071 result->len = (result->data[1] == 0) ? 1 : 2;
1082 result->exp = result->digits = result->len = 0;
1092 result->exp = result->digits = result->len = 0;
1205 int i, len;
1207 len = 0;
1210 w[len] = (mpd_uint_t)(u - q * MPD_RADIX);
1211 u = q; len++;
1214 if (!mpd_qresize(result, len, status)) {
1217 for (i = 0; i < len; i++) {
1223 result->len = len;
1481 switch (tmp.len) {
1749 mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len);
1751 dec->data[dec->len-1] = mpd_pow10[MPD_RDIGITS-1];
1774 mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len);
1776 if (!mpd_qresize(dec, dec->len+1, status)) {
1779 dec->data[dec->len] = 1;
1780 dec->len += 1;
1796 mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len);
1798 if (!mpd_qresize(dec, dec->len+1, status)) {
1801 dec->data[dec->len] = 1;
1802 dec->len += 1;
1989 dest->len = src->len;
2004 if (!mpd_qresize(result, a->len, status)) {
2011 result->len = a->len;
2012 memcpy(result->data, a->data, a->len * (sizeof *result->data));
2023 if (!mpd_qresize_cxx(result, a->len)) {
2030 result->len = a->len;
2031 memcpy(result->data, a->data, a->len * (sizeof *result->data));
2045 memcpy(result->data, a->data, a->len * (sizeof *result->data));
2050 result->len = a->len;
2062 if ((result = mpd_qnew_size(a->len)) == NULL) {
2065 memcpy(result->data, a->data, a->len * (sizeof *result->data));
2069 result->len = a->len;
2206 return -1 * _mpd_basecmp(b->data, a->data, b->len, a->len, shift);
2209 return _mpd_basecmp(a->data, b->data, a->len, b->len, -shift);
2215 * so a->digits == b->digits, therefore a->len == b->len.
2217 for (i = a->len-1; i >= 0; --i) {
2397 if (a->len > 0 && b->len > 0) {
2405 c = (a->len > 0) - (b->len > 0);
2518 _mpd_baseshiftl(result->data, a->data, size, a->len, n);
2523 result->len = size;
2531 _mpd_get_rnd(const mpd_uint_t *data, mpd_ssize_t len, int use_msd)
2535 word = data[len-1];
2539 if (len > 1 && rest == 0) {
2540 rest = !_mpd_isallzero(data, len-1);
2544 rest = !_mpd_isallzero(data, len);
2570 rnd = _mpd_get_rnd(a->data, a->len, (n==a->digits));
2576 rnd = _mpd_baseshiftr(result->data, a->data, a->len, n);
2577 result->len = size;
2606 rnd = _mpd_get_rnd(result->data, result->len, (n==result->digits));
2610 rnd = _mpd_baseshiftr(result->data, result->data, result->len, n);
2615 result->len = size;
2645 rnd = _mpd_get_rnd(a->data, a->len, (n==a->digits));
2652 rnd = _mpd_baseshiftr(result->data, a->data, a->len, n);
2660 rnd = _mpd_baseshiftr(result->data, a->data, a->len, n);
2662 result->len = size;
2696 if (!mpd_qresize(result, big->len, status)) {
2702 for (i = 0; i < small->len-1; i++) {
2744 for (; i < big->len; i++) {
2757 result->len = _mpd_real_size(result->data, small->len);
2758 mpd_qresize(result, result->len, status);
2805 mpd_ssize_t i, digits, len;
2816 len = (r == 0) ? q : q+1;
2817 if (!mpd_qresize(result, len, status)) {
2821 for (i = 0; i < len; i++) {
2822 x = (i < a->len) ? a->data[i] : 0;
2837 result->len = _mpd_real_size(result->data, len);
2838 mpd_qresize(result, result->len, status);
2887 if (!mpd_qresize(result, big->len, status)) {
2893 for (i = 0; i < small->len-1; i++) {
2936 for (; i < big->len; i++) {
2950 result->len = _mpd_real_size(result->data, big->len);
2951 mpd_qresize(result, result->len, status);
3206 if (!mpd_qresize(result, big->len, status)) {
3212 for (i = 0; i < small->len-1; i++) {
3255 for (; i < big->len; i++) {
3269 result->len = _mpd_real_size(result->data, big->len);
3270 mpd_qresize(result, result->len, status);
3394 tiny.len = 1;
3411 if (big->len < small->len) {
3416 newsize = big->len;
3424 big->len, small->len);
3427 newsize = big->len + 1;
3434 result->len = newsize;
3438 if (big->len == small->len) {
3439 for (i=big->len-1; i >= 0; --i) {
3451 big->len, small->len);
3452 newsize = _mpd_real_size(result->data, big->len);
3456 result->len = newsize;
3811 newsize = a->len - b->len + 1;
3812 if ((q != b && q != a) || (q == b && newsize > b->len)) {
3820 if (b->len == 1) {
3821 rem = _mpd_shortdiv(q->data, a->data, a->len, b->data[0]);
3823 else if (b->len <= MPD_NEWTONDIV_CUTOFF) {
3825 a->len, b->len);
3842 newsize = q->len;
3849 q->len = newsize;
4019 qsize = a->len - b->len + 1;
4020 if (!(q == a && qsize < a->len) && !(q == b && qsize < b->len)) {
4026 rsize = b->len;
4027 if (!(r == a && rsize < a->len)) {
4033 if (b->len == 1) {
4035 if (a->len == 1) {
4039 r->data[0] = _mpd_shortdiv(q->data, a->data, a->len, b->data[0]);
4042 else if (b->len <= MPD_NEWTONDIV_CUTOFF) {
4045 a->len, b->len);
4056 qsize = q->len;
4057 rsize = r->len;
4063 q->len = qsize;
4075 r->len = rsize;
4880 z->len = 1;
5914 if (small->len > big->len) {
5918 rsize = big->len + small->len;
5920 if (big->len == 1) {
5925 if (big->len == 2) {
5926 _mpd_mul_2_le2(rbuf, big->data, small->data, small->len);
5930 if (small->len == 1) {
5931 _mpd_shortmul(rbuf, big->data, big->len, small->data[0]);
5934 _mpd_basemul(rbuf, small->data, big->data, small->len, big->len);
5947 if (small->len <= 256) {
5950 if (small->len == 1) {
5951 _mpd_shortmul(rdata, big->data, big->len, small->data[0]);
5954 _mpd_basemul(rdata, small->data, big->data, small->len, big->len);
5959 rdata = _mpd_kmul(big->data, small->data, big->len, small->len, &rsize);
5962 rdata = _mpd_fntmul(big->data, small->data, big->len, small->len, &rsize);
5965 rdata = _mpd_kmul_fnt(big->data, small->data, big->len, small->len, &rsize);
5984 result->len = _mpd_real_size(result->data, rsize);
5986 mpd_qresize(result, result->len, status);
7447 z->len = (z->data[1] == 0) ? 1 : 2;
7742 z->len = 1;
8419 n = _baseconv_to_u16(rdata, rlen, rbase, tsrc.data, tsrc.len);
8498 tsrc.data, tsrc.len, MPD_RADIX);
8501 n = _copy_equal_base(rdata, rlen, tsrc.data, tsrc.len);
8505 tsrc.data, tsrc.len, MPD_RADIX);
8509 tsrc.data, tsrc.len, MPD_RADIX);
8576 result->len = n;
8579 mpd_qresize(result, result->len, status);
8652 result->len = n;
8655 mpd_qresize(result, result->len, status);
8723 _set_coeff(mpd_uint_t *data, mpd_ssize_t len, uint64_t hi, uint64_t lo)
8737 return (mpd_ssize_t)_uint_from_u16(data, len, u16, 8);
8746 mpd_ssize_t len;
8749 len = _set_coeff(data, hi, lo);
8751 len = _set_coeff(data, 5, hi, lo);
8754 if (!mpd_qresize(result, len, &status)) {
8758 for (mpd_ssize_t i = 0; i < len; i++) {
8763 result->len = len;
8878 switch (a->len) {
8921 switch (a->len) {
8937 _uint_to_u16(u16, data, a->len);
8973 if (a->len == 0) { /* no payload */