// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package math

/*
 * this table might overflow 127-bit exponent representations.
 * in that case, truncate it after 1.0e38.
 * it is important to get all one can from this
 * routine since it is used in atof to scale numbers.
 * the presumption is that GO converts fp numbers better
 * than multipication of lower powers of 10.
 */

var pow10tab [70]float64

// Pow10 returns 10**x, the base-10 exponential of x.
func Pow10(e int) float64 {
	if e < 0 {
		return 1 / Pow10(-e)
	}
	if e < len(pow10tab) {
		return pow10tab[e]
	}
	m := e / 2;
	return Pow10(m) * Pow10(e-m);
}

func init() {
	pow10tab[0] = 1.0e0;
	pow10tab[1] = 1.0e1;
	for i := 2; i < len(pow10tab); i++ {
		m := i / 2;
		pow10tab[i] = pow10tab[m] * pow10tab[i-m];
	}
}
