361 |
int |
int |
362 |
obj_to_mpz(object x,MP_INT * y) { |
obj_to_mpz(object x,MP_INT * y) { |
363 |
|
|
364 |
int ret=0; |
switch(type_of(x)) { |
365 |
|
case t_fixnum: |
366 |
|
mpz_set_si(y,fix(x)); |
367 |
|
break; |
368 |
|
case t_bignum: |
369 |
|
if (abs(MP(x)->_mp_size)<=y->_mp_alloc) |
370 |
|
mpz_set(y,MP(x)); |
371 |
|
else |
372 |
|
return abs(MP(x)->_mp_size)*sizeof(*y->_mp_d); |
373 |
|
break; |
374 |
|
default: |
375 |
|
FEerror("fixnum or bignum expected",0); |
376 |
|
break; |
377 |
|
} |
378 |
|
|
379 |
|
return 0; |
380 |
|
|
381 |
|
} |
382 |
|
|
383 |
|
int |
384 |
|
obj_to_mpz1(object x,MP_INT * y,void *v) { |
385 |
|
|
386 |
switch(type_of(x)) { |
switch(type_of(x)) { |
387 |
case t_fixnum: |
case t_fixnum: |
388 |
mpz_set_si(y,fix(x)); |
mpz_set_si(y,fix(x)); |
389 |
break; |
break; |
390 |
case t_bignum: |
case t_bignum: |
391 |
|
y->_mp_alloc=abs(MP(x)->_mp_size); |
392 |
|
y->_mp_d=v; |
393 |
mpz_set(y,MP(x)); |
mpz_set(y,MP(x)); |
394 |
break; |
break; |
395 |
default: |
default: |
396 |
FEerror("fixnum or bignum expected",0); |
FEerror("fixnum or bignum expected",0); |
|
ret=1; |
|
397 |
break; |
break; |
398 |
} |
} |
399 |
|
|
400 |
return ret; |
return 0; |
401 |
|
|
402 |
} |
} |
403 |
|
|
404 |
int |
int |
405 |
mpz_to_mpz(MP_INT * x,MP_INT * y) { |
mpz_to_mpz(MP_INT * x,MP_INT * y) { |
406 |
|
|
407 |
int ret=0; |
if (abs(x->_mp_size)<=y->_mp_alloc) |
408 |
|
mpz_set(y,x); |
409 |
|
else |
410 |
|
return abs(x->_mp_size)*sizeof(*y->_mp_d); |
411 |
|
|
412 |
|
return 0; |
413 |
|
|
414 |
|
} |
415 |
|
|
416 |
|
int |
417 |
|
mpz_to_mpz1(MP_INT * x,MP_INT * y,void *v) { |
418 |
|
|
419 |
|
y->_mp_alloc=abs(x->_mp_size); |
420 |
|
y->_mp_d=v; |
421 |
mpz_set(y,x); |
mpz_set(y,x); |
422 |
return ret; |
return 0; |
423 |
|
|
424 |
} |
} |
425 |
|
|