/**********
Copyright 1991 Regents of the University of California.  All rights reserved.
**********/

#include "ngspice.h"

#ifndef HAVE_SCALBN

double
scalbn(double x, int n)
{
  double y, z = 1.0, k = 2.0;
  
  if (n < 0) {
    n = -n;
    k = 0.5;
  }
  
  if (x != 0.0)
    for (y = 1.0; n; n >>= 1) {
      y *= k;
      if (n & 1)
	z *= y;
    }
  
  return x * z;
}

#else /* HAVE_SCALBN */

int Dummy_Symbol_1;

#endif /* HAVE_SCALBN */


#ifndef HAVE_SCALB

double
scalb(double x, double n)
{
  return scalbn(x, (int) n);
}

#else /* HAVE_SCALB */

int Dummy_Symbol_2;

#endif /* HAVE_SCALB */
