Method: Fixnum#fact

Defined in:
ext/rmtools.cpp

#factObject

x! ( specially for /c/ ^__^ ) 5.fact # => 120 x3 boost relative to 1.8.7



415
416
417
418
419
420
421
422
423
# File 'ext/rmtools.cpp', line 415

static VALUE rb_math_factorial(VALUE x)
{
  long a = FIX2LONG(x);
  for (int i = 2; i < a; i++) 
    x = TYPE(x) == T_BIGNUM ? 
      rb_big_mul(x, rb_int2big(i)) : 
      rb_big_mul(rb_int2big(FIX2LONG(x)), rb_int2big(i));
  return x;
}