github.com/roboticscm/goman@v0.0.0-20210203095141-87c07b4a0a55/src/math/pow10.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package math
     6  
     7  // This table might overflow 127-bit exponent representations.
     8  // In that case, truncate it after 1.0e38.
     9  var pow10tab [70]float64
    10  
    11  // Pow10 returns 10**e, the base-10 exponential of e.
    12  //
    13  // Special cases are:
    14  //	Pow10(e) = +Inf for e > 309
    15  //	Pow10(e) = 0 for e < -324
    16  func Pow10(e int) float64 {
    17  	if e <= -325 {
    18  		return 0
    19  	} else if e > 309 {
    20  		return Inf(1)
    21  	}
    22  
    23  	if e < 0 {
    24  		return 1 / Pow10(-e)
    25  	}
    26  	if e < len(pow10tab) {
    27  		return pow10tab[e]
    28  	}
    29  	m := e / 2
    30  	return Pow10(m) * Pow10(e-m)
    31  }
    32  
    33  func init() {
    34  	pow10tab[0] = 1.0e0
    35  	pow10tab[1] = 1.0e1
    36  	for i := 2; i < len(pow10tab); i++ {
    37  		m := i / 2
    38  		pow10tab[i] = pow10tab[m] * pow10tab[i-m]
    39  	}
    40  }