/* $Header$ */

/*
	computes a^b.
	uses log and exp
*/

double _log(), _exp();

double
_power(base,pownr)
double pownr, base;
{
	double temp;
	long l;

	if(pownr <= 0.0) {
		if(pownr == 0.0) {
			if(base <= 0.0)
				error(3);
			return(0.0);
		}
		l = base;
		if(l != base)
			error(3);
		temp = _exp(base * _log(-pownr));
		if(l & 1)
			temp = -temp;
		return(temp);
	}
	return(_exp(base * _log(pownr)));
}