power.c 404 B

1234567891011121314151617181920212223242526272829303132
  1. /* $Id$ */
  2. /*
  3. computes a^b.
  4. uses log and exp
  5. */
  6. double _log(), _exp();
  7. double
  8. _power(base,pownr)
  9. double pownr, base;
  10. {
  11. double temp;
  12. long l;
  13. if(pownr <= 0.0) {
  14. if(pownr == 0.0) {
  15. if(base <= 0.0)
  16. error(3);
  17. return(0.0);
  18. }
  19. l = base;
  20. if(l != base)
  21. error(3);
  22. temp = _exp(base * _log(-pownr));
  23. if(l & 1)
  24. temp = -temp;
  25. return(temp);
  26. }
  27. return(_exp(base * _log(pownr)));
  28. }