Math-Factor-XS

 view release on metacpan or  search on metacpan

XS.xs  view on Meta::CPAN


MODULE = Math::Factor::XS               PACKAGE = Math::Factor::XS

void
factors (number)
      unsigned long number
    PROTOTYPE: $
    INIT:
      unsigned long i, square_root;
      AV *factors;
    PPCODE:
      /* range check */
      {
        double d = SvNV(ST(0));
        if (! (d >= 0 && d < double_ulong_max_plus_1)) {
          croak ("Cannot factors() on %g", d);
        }
      }

      factors = newAV ();
      square_root = sqrt (number);

XS.xs  view on Meta::CPAN

      unsigned long number
      SV *factors_aref
    PROTOTYPE: $\@
    INIT:
      AV *factors;
      unsigned long *prev_base = NULL;
      unsigned int b, c, p = 0;
      unsigned int top = items - 1;
      bool Skip_multiples = FALSE;
      bool skip = FALSE;
    PPCODE:
      factors = (AV*)SvRV (factors_aref);

      if (av_len (factors) == -1)
        XSRETURN_EMPTY;

      if (SvROK (ST(top)) && SvTYPE (SvRV(ST(top))) == SVt_PVHV)
        {
          const char *opt = "skip_multiples";
          unsigned int len = strlen (opt);
          HV *opts = (HV*)SvRV (ST(top));

XS.xs  view on Meta::CPAN

#
void
prime_factors (number)
      unsigned long number
    ALIAS:
     count_prime_factors = 1
    INIT:
     unsigned long i, limit;
     unsigned incr;
     unsigned long count = 0;
    PPCODE:
      /* range check */
      {
        double d = SvNV(ST(0));
        if (! (d >= 0 && d < double_ulong_max_plus_1)) {
          croak ("Cannot prime_factors() on %g", d);
        }
      }

      if (number > 0) {
        /* or perhaps __builtin_ctz() in new enough gcc, but usually there



( run in 0.702 second using v1.01-cache-2.11-cpan-5511b514fd6 )