Math-GMPq

 view release on metacpan or  search on metacpan

GMPq.xs  view on Meta::CPAN

       mpq_mul(*mpq_t_obj, *b, *mpq_t_obj);
       mpq_sub(*mpq_t_obj, *a, *mpq_t_obj);
     }
     mpz_clear(z);
     return obj_ref;
}

SV * _overload_fmod_eq (pTHX_ SV * a, mpq_t *b, SV * third) {
     mpq_t t;
     mpz_t z;

     PERL_UNUSED_ARG(third);
     SvREFCNT_inc(a);

     mpq_init(t);
     mpz_init(z);
     mpq_div(t, *(INT2PTR(mpq_t *, SvIVX(SvRV(a)))), *b);
     mpz_set_q(z, t);
     mpq_set_z(t, z);
     mpq_mul(t, *b, t);
     mpq_sub(*(INT2PTR(mpq_t *, SvIVX(SvRV(a)))), *(INT2PTR(mpq_t *, SvIVX(SvRV(a)))), t);

     mpq_clear(t);
     mpz_clear(z);

     return a;
}

SV * _to_base(pTHX_ SV * str, int base) {
    /* Convert the value held in the string *
     * from the specified base to base 10   */

    char buf[16];
    mpz_t t;

    if(mpz_init_set_str(t, SvPV_nolen(str), base))
      croak("Exponent portion of string supplied to Rmpq_set_str function (%s) is not a valid base %d number", SvPV_nolen(str), base);
    gmp_sprintf (buf, "%Zd", t);

    mpz_clear(t);
    return newSVpv(buf, 0);
}






MODULE = Math::GMPq  PACKAGE = Math::GMPq

PROTOTYPES: DISABLE


int
_is_infstring (s)
	char *	s

void
Rmpq_canonicalize (p)
	mpq_t *	p
        PPCODE:
        Rmpq_canonicalize(p);
        XSRETURN_EMPTY; /* return empty stack */

SV *
Rmpq_init ()
CODE:
  RETVAL = Rmpq_init (aTHX);
OUTPUT:  RETVAL


SV *
Rmpq_init_nobless ()
CODE:
  RETVAL = Rmpq_init_nobless (aTHX);
OUTPUT:  RETVAL


void
DESTROY (p)
	mpq_t *	p
        PPCODE:
        DESTROY(aTHX_ p);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_clear (p)
	mpq_t *	p
        PPCODE:
        Rmpq_clear(aTHX_ p);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_clear_mpq (p)
	mpq_t *	p
        PPCODE:
        Rmpq_clear_mpq(p);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_clear_ptr (p)
	mpq_t *	p
        PPCODE:
        Rmpq_clear_ptr(aTHX_ p);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set (p1, p2)
	mpq_t *	p1
	mpq_t *	p2
        PPCODE:
        Rmpq_set(p1, p2);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_swap (p1, p2)
	mpq_t *	p1
	mpq_t *	p2
        PPCODE:
        Rmpq_swap(p1, p2);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_z (p1, p2)
	mpq_t *	p1
	mpz_t *	p2
        PPCODE:
        Rmpq_set_z(p1, p2);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_ui (p1, p2, p3)
	mpq_t *	p1
	unsigned long	p2
	unsigned long	p3
        PPCODE:
        Rmpq_set_ui(p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_si (p1, p2, p3)
	mpq_t *	p1
	long	p2
	long	p3
        PPCODE:
        Rmpq_set_si(p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
_Rmpq_set_str (p1, p2, base)
	mpq_t *	p1
	SV *	p2
	int	base
        PPCODE:
        _Rmpq_set_str(aTHX_ p1, p2, base);
        XSRETURN_EMPTY; /* return empty stack */

double
Rmpq_get_d (p)
	mpq_t *	p

void
Rmpq_set_d (p, d)
	mpq_t *	p
	double	d
        PPCODE:
        Rmpq_set_d(p, d);
        XSRETURN_EMPTY; /* return empty stack */

void
_mpf_set_doubledouble (q, p)
	mpf_t *	q
	SV *	p
        PPCODE:
        _mpf_set_doubledouble(q, p);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_NV (copy, original)
	mpq_t *	copy
	SV *	original
        PPCODE:
        Rmpq_set_NV(aTHX_ copy, original);
        XSRETURN_EMPTY; /* return empty stack */

int
Rmpq_cmp_NV (a, b)
	mpq_t *	a
	SV *	b
CODE:
  RETVAL = Rmpq_cmp_NV (aTHX_ a, b);
OUTPUT:  RETVAL

void
Rmpq_set_f (p, f)
	mpq_t *	p
	mpf_t *	f
        PPCODE:
        Rmpq_set_f(p, f);
        XSRETURN_EMPTY; /* return empty stack */

SV *
Rmpq_get_str (p, base)
	mpq_t *	p
	int	base
CODE:
  RETVAL = Rmpq_get_str (aTHX_ p, base);
OUTPUT:  RETVAL

int
Rmpq_cmp (p1, p2)
	mpq_t *	p1
	mpq_t *	p2

int
Rmpq_cmp_ui (p1, n, d)
	mpq_t *	p1
	unsigned long	n
	unsigned long	d

int
Rmpq_cmp_si (p1, n, d)
	mpq_t *	p1
	long	n
	unsigned long	d

int
Rmpq_cmp_z (p, z)
	mpq_t *	p
	mpz_t *	z

int
Rmpq_sgn (p)
	mpq_t *	p

int
Rmpq_equal (p1, p2)
	mpq_t *	p1
	mpq_t *	p2

void
Rmpq_add (p1, p2, p3)
	mpq_t *	p1
	mpq_t *	p2
	mpq_t *	p3
        PPCODE:
        Rmpq_add(p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_sub (p1, p2, p3)
	mpq_t *	p1
	mpq_t *	p2
	mpq_t *	p3
        PPCODE:
        Rmpq_sub(p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_mul (p1, p2, p3)
	mpq_t *	p1
	mpq_t *	p2
	mpq_t *	p3
        PPCODE:
        Rmpq_mul(p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_div (p1, p2, p3)
	mpq_t *	p1
	mpq_t *	p2
	mpq_t *	p3
        PPCODE:
        Rmpq_div(p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_mul_2exp (p1, p2, p3)
	mpq_t *	p1
	mpq_t *	p2
	SV *	p3
        PPCODE:
        Rmpq_mul_2exp(aTHX_ p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_div_2exp (p1, p2, p3)
	mpq_t *	p1
	mpq_t *	p2
	SV *	p3
        PPCODE:
        Rmpq_div_2exp(aTHX_ p1, p2, p3);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_neg (p1, p2)
	mpq_t *	p1
	mpq_t *	p2
        PPCODE:
        Rmpq_neg(p1, p2);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_abs (p1, p2)
	mpq_t *	p1
	mpq_t *	p2
        PPCODE:
        Rmpq_abs(p1, p2);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_inv (p1, p2)
	mpq_t *	p1
	mpq_t *	p2
        PPCODE:
        Rmpq_inv(p1, p2);
        XSRETURN_EMPTY; /* return empty stack */

SV *
_Rmpq_out_str (p, base)
	mpq_t *	p
	int	base
CODE:
  RETVAL = _Rmpq_out_str (aTHX_ p, base);
OUTPUT:  RETVAL

SV *
_Rmpq_out_strS (p, base, suff)
	mpq_t *	p
	int	base
	SV *	suff
CODE:
  RETVAL = _Rmpq_out_strS (aTHX_ p, base, suff);
OUTPUT:  RETVAL

SV *
_Rmpq_out_strP (pre, p, base)
	SV *	pre
	mpq_t *	p
	int	base
CODE:
  RETVAL = _Rmpq_out_strP (aTHX_ pre, p, base);
OUTPUT:  RETVAL

SV *
_Rmpq_out_strPS (pre, p, base, suff)
	SV *	pre
	mpq_t *	p
	int	base
	SV *	suff
CODE:
  RETVAL = _Rmpq_out_strPS (aTHX_ pre, p, base, suff);
OUTPUT:  RETVAL

SV *
_TRmpq_out_str (stream, base, p)
	FILE *	stream
	int	base
	mpq_t *	p
CODE:
  RETVAL = _TRmpq_out_str (aTHX_ stream, base, p);
OUTPUT:  RETVAL

SV *
_TRmpq_out_strS (stream, base, p, suff)
	FILE *	stream
	int	base
	mpq_t *	p
	SV *	suff
CODE:
  RETVAL = _TRmpq_out_strS (aTHX_ stream, base, p, suff);
OUTPUT:  RETVAL

SV *
_TRmpq_out_strP (pre, stream, base, p)
	SV *	pre
	FILE *	stream
	int	base
	mpq_t *	p
CODE:
  RETVAL = _TRmpq_out_strP (aTHX_ pre, stream, base, p);
OUTPUT:  RETVAL

SV *
_TRmpq_out_strPS (pre, stream, base, p, suff)
	SV *	pre
	FILE *	stream
	int	base
	mpq_t *	p
	SV *	suff
CODE:
  RETVAL = _TRmpq_out_strPS (aTHX_ pre, stream, base, p, suff);
OUTPUT:  RETVAL

SV *
TRmpq_inp_str (p, stream, base)
	mpq_t *	p
	FILE *	stream
	SV *	base
CODE:
  RETVAL = TRmpq_inp_str (aTHX_ p, stream, base);
OUTPUT:  RETVAL

SV *
Rmpq_inp_str (p, base)
	mpq_t *	p
	int	base
CODE:
  RETVAL = Rmpq_inp_str (aTHX_ p, base);
OUTPUT:  RETVAL

void
Rmpq_numref (z, r)
	mpz_t *	z
	mpq_t *	r
        PPCODE:
        Rmpq_numref(z, r);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_denref (z, r)
	mpz_t *	z
	mpq_t *	r
        PPCODE:
        Rmpq_denref(z, r);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_get_num (z, r)
	mpz_t *	z
	mpq_t *	r
        PPCODE:
        Rmpq_get_num(z, r);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_get_den (z, r)
	mpz_t *	z
	mpq_t *	r
        PPCODE:
        Rmpq_get_den(z, r);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_num (r, z)
	mpq_t *	r
	mpz_t *	z
        PPCODE:
        Rmpq_set_num(r, z);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_den (r, z)
	mpq_t *	r
	mpz_t *	z
        PPCODE:
        Rmpq_set_den(r, z);
        XSRETURN_EMPTY; /* return empty stack */

SV *
get_refcnt (s)
	SV *	s
CODE:
  RETVAL = get_refcnt (aTHX_ s);
OUTPUT:  RETVAL

void
Rmpq_add_z (rop, op, z)
	mpq_t *	rop
	mpq_t *	op
	mpz_t *	z
        PPCODE:
        Rmpq_add_z(rop, op, z);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_sub_z (rop, op, z)
	mpq_t *	rop
	mpq_t *	op
	mpz_t *	z
        PPCODE:
        Rmpq_sub_z(rop, op, z);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_z_sub (rop, z, op)
	mpq_t *	rop
	mpz_t *	z
	mpq_t *	op
        PPCODE:
        Rmpq_z_sub(rop, z, op);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_mul_z (rop, op, z)
	mpq_t *	rop
	mpq_t *	op
	mpz_t *	z
        PPCODE:
        Rmpq_mul_z(rop, op, z);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_div_z (rop, op, z)
	mpq_t *	rop
	mpq_t *	op
	mpz_t *	z
        PPCODE:
        Rmpq_div_z(rop, op, z);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_z_div (rop, z, op)
	mpq_t *	rop
	mpz_t *	z
	mpq_t *	op
        PPCODE:
        Rmpq_z_div(rop, z, op);
        XSRETURN_EMPTY; /* return empty stack */

int
Rmpq_fits_uint_p (op)
	mpq_t *	op

void
Rmpq_pow_ui (rop, op, ui)
	mpq_t *	rop
	mpq_t *	op
	unsigned long	ui
        PPCODE:
        Rmpq_pow_ui(rop, op, ui);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_set_IV (a, my_iv1, my_iv2)
	mpq_t *	a
	SV *	my_iv1
	SV *	my_iv2
        PPCODE:
        Rmpq_set_IV(aTHX_ a, my_iv1, my_iv2);
        XSRETURN_EMPTY; /* return empty stack */

int
Rmpq_cmp_IV (q, iv1, iv2)
	mpq_t *	q
	SV *	iv1
	SV *	iv2
CODE:
  RETVAL = Rmpq_cmp_IV (aTHX_ q, iv1, iv2);
OUTPUT:  RETVAL

SV *
_overload_mul (a, b, third)
	SV *	a
	SV *	b
	SV *	third
CODE:
  RETVAL = _overload_mul (aTHX_ a, b, third);
OUTPUT:  RETVAL

void
Rmpq_and (rop, a, b)
	mpq_t *	rop
	mpq_t *	a
	mpq_t *	b
        PPCODE:
        Rmpq_and(rop, a, b);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_ior (rop, a, b)
	mpq_t *	rop
	mpq_t *	a
	mpq_t *	b
        PPCODE:
        Rmpq_ior(rop, a, b);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_xor (rop, a, b)
	mpq_t *	rop
	mpq_t *	a
	mpq_t *	b
        PPCODE:
        Rmpq_xor(rop, a, b);
        XSRETURN_EMPTY; /* return empty stack */

void
Rmpq_com (rop, a)
	mpq_t *	rop
	mpq_t *	a
        PPCODE:
        Rmpq_com(rop, a);
        XSRETURN_EMPTY; /* return empty stack */

SV *
_overload_add (a, b, third)
	SV *	a
	SV *	b
	SV *	third
CODE:
  RETVAL = _overload_add (aTHX_ a, b, third);
OUTPUT:  RETVAL

SV *
_overload_sub (a, b, third)
	SV *	a
	SV *	b
	SV *	third
CODE:
  RETVAL = _overload_sub (aTHX_ a, b, third);
OUTPUT:  RETVAL

SV *
_overload_div (a, b, third)
	SV *	a
	SV *	b
	SV *	third
CODE:
  RETVAL = _overload_div (aTHX_ a, b, third);
OUTPUT:  RETVAL

SV *
overload_string (p, second, third)
	mpq_t *	p
	SV *	second
	SV *	third
CODE:
  RETVAL = overload_string (aTHX_ p, second, third);
OUTPUT:  RETVAL

NV
_mpf_get_float128 (x)
	mpf_t *	x

int
_rndaz (a, exponent, prec, display)
	char *	a
	IV	exponent
	UV	prec
	int	display

double
_mpf_get_d_rndn (p)
	mpf_t *	p

NV
_mpf_get_ld (x)
	mpf_t *	x

SV *
Rmpq_get_NV (x)

GMPq.xs  view on Meta::CPAN


int
_has_longlong ()


int
_has_longdouble ()


int
_has_inttypes ()


SV *
___GNU_MP_VERSION ()
CODE:
  RETVAL = ___GNU_MP_VERSION (aTHX);
OUTPUT:  RETVAL


SV *
___GNU_MP_VERSION_MINOR ()
CODE:
  RETVAL = ___GNU_MP_VERSION_MINOR (aTHX);
OUTPUT:  RETVAL


SV *
___GNU_MP_VERSION_PATCHLEVEL ()
CODE:
  RETVAL = ___GNU_MP_VERSION_PATCHLEVEL (aTHX);
OUTPUT:  RETVAL


SV *
___GNU_MP_RELEASE ()
CODE:
  RETVAL = ___GNU_MP_RELEASE (aTHX);
OUTPUT:  RETVAL


SV *
___GMP_CC ()
CODE:
  RETVAL = ___GMP_CC (aTHX);
OUTPUT:  RETVAL


SV *
___GMP_CFLAGS ()
CODE:
  RETVAL = ___GMP_CFLAGS (aTHX);
OUTPUT:  RETVAL


void
overload_inc (p, second, third)
	SV *	p
	SV *	second
	SV *	third
        PPCODE:
        overload_inc(aTHX_ p, second, third);
        XSRETURN_EMPTY; /* return empty stack */

void
overload_dec (p, second, third)
	SV *	p
	SV *	second
	SV *	third
        PPCODE:
        overload_dec(aTHX_ p, second, third);
        XSRETURN_EMPTY; /* return empty stack */

SV *
_wrap_count ()
CODE:
  RETVAL = _wrap_count (aTHX);
OUTPUT:  RETVAL


SV *
_overload_pow (a, b, third)
	SV *	a
	SV *	b
	SV *	third
CODE:
  RETVAL = _overload_pow (aTHX_ a, b, third);
OUTPUT:  RETVAL

SV *
_get_xs_version ()
CODE:
  RETVAL = _get_xs_version (aTHX);
OUTPUT:  RETVAL


int
Rmpq_integer_p (q)
	mpq_t *	q

SV *
_GMP_LIMB_BITS ()
CODE:
  RETVAL = _GMP_LIMB_BITS (aTHX);
OUTPUT:  RETVAL


SV *
_GMP_NAIL_BITS ()
CODE:
  RETVAL = _GMP_NAIL_BITS (aTHX);
OUTPUT:  RETVAL


long
_long_min ()


long
_long_max ()


unsigned long
_ulong_max ()


int
_int_min ()




( run in 2.477 seconds using v1.01-cache-2.11-cpan-71847e10f99 )