fn my_pow(mut base: f64, mut exponent: i32) -> f64 {
let mut result = 1.0;
while exponent > 0 {
if (exponent & 1) == 1 {
result *= base;
}
exponent >>= 1;
base *= base;
}
result
}
fn main() {
println!("{}", my_pow(2.0, 3)); // 8
println!("{}", my_pow(3.0, 3)); // 27
println!("{}", my_pow(3.0, 2)); // 9
println!("{}", my_pow(2.0, 2)); // 4
println!("{}", my_pow(5.0, 2)); // 25
println!("{}", my_pow(-2.0, 4)); // 16
}
/*
run:
8
27
9
4
25
16
*/