pub fn pow_signed(&self, exp: i64) -> Perm {
        if exp < 0 {
            assert_ne!(exp, std::i64::MIN);  // technically possible to support but... come on, man
            self.inverted().pow_unsigned((-exp) as u64)
        } else {
            self.pow_unsigned(exp as u64)
        }
    }
/// Compute the permutation that applies this permutation `exp` times in a row.
///
/// This version of the function takes a signed value, so that negative values can produce
/// powers of the inverse.
///
/// This uses exponentiation by squaring to run in `O(log(exp))` time.
Compute the permutation that applies this permutation `exp` times in a row.
This version of the function takes a signed value, so that negative values can produce
powers of the inverse.

This uses exponentiation by squaring to run in `O(log(exp))` time.
Compute the permutation that applies this permutation ` exp ` times in a row . This version of the function takes a signed value so that negative values can produce powers of the inverse . This uses exponentiation by squaring to run in ` O ( log ( exp )) ` time .
pub fn pow_signed(&self, exp: i64) -> Perm {
        if exp < 0 {
            assert_ne!(exp, std::i64::MIN);  // technically possible to support but... come on, man
            self.inverted().pow_unsigned((-exp) as u64)
        } else {
            self.pow_unsigned(exp as u64)
        }
    }
pub fn pow_signed ( & self , exp : i64 ) -> Perm { if exp < 0 { assert_ne ! ( exp std i64 MIN ) ; // technically possible to support but... come on, man self . inverted ( ) . pow_unsigned ( ( - exp ) as u64 ) } else { self . pow_unsigned ( exp as u64 ) } }
Compute the permutation that applies this permutation `exp` times in a row.
Compute the permutation that applies this permutation ` exp ` times in a row .
&self
exp
i64
&self
exp
i64