number=8
power=3
#** is the power inside $(( ))
result1=$((number ** power))
#result1 is 512
#like 8 ** 3 % 100
result2=$((number ** power % 100))
#result2 is 12
#trap: bash numbers are 64-bit, a bigger power wraps around
wrapped=$((2 ** 64))
#wrapped is 0
#bc has ^ and no limit on the digits
result3=$(bc <<< "2 ^ 64")
#result3 is 18446744073709551616
#a fractional base goes to bc as well; scale keeps the digits
result4=$(bc <<< "scale=3; 1.5 ^ 3")
#result4 is 3.375
echo "result1 is $result1"
echo "result2 is $result2"
echo "wrapped is $wrapped"
echo "result3 is $result3"
echo "result4 is $result4"