Here’s a Haskell implementation of a power function, x ^ n, where x is a double and n is an int.
import Text.Printf import Data.Char toBits :: Int -> [Int] toBits x= reverse (map (\x->ord x - 48) (printf "%b" x) ) pown x n = product $ filter (>0) $ zipWith (*) (map toInteger$toBits n) (iterate (\x->x*x) x) main = print $ pown 2 14