ruby pow implementation