github.com/biogo/biogo@v1.0.4/util/maths.go (about)

     1  // Copyright ©2011-2012 The bíogo 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 util
     6  
     7  import (
     8  	"math"
     9  )
    10  
    11  const (
    12  	MaxUint = ^uint(0)                                                     // The maximum uint value.
    13  	MinUint = uint(0)                                                      // The minimum uint value.
    14  	MaxInt  = int(^uint(0) >> 1)                                           // The maximum int value.
    15  	MinInt  = -MaxInt - 1                                                  // The minimum int value.
    16  	Ln4     = 1.3862943611198906188344642429163531361510002687205105082413 // The natural log of 4.
    17  )
    18  
    19  // Returns the minimum int of a...
    20  func Min(a ...int) (min int) {
    21  	min = MaxInt
    22  	for _, i := range a {
    23  		if i < min {
    24  			min = i
    25  		}
    26  	}
    27  	return
    28  }
    29  
    30  // Returns the minimum uint of a...
    31  func UMin(a ...uint) (min uint) {
    32  	min = MaxUint
    33  	for _, i := range a {
    34  		if i < min {
    35  			min = i
    36  		}
    37  	}
    38  	return
    39  }
    40  
    41  // Returns the maximum int of a...
    42  func Max(a ...int) (max int) {
    43  	max = MinInt
    44  	for _, i := range a {
    45  		if i > max {
    46  			max = i
    47  		}
    48  	}
    49  	return
    50  }
    51  
    52  // Returns the maximum uint of a...
    53  func UMax(a ...uint) (max uint) {
    54  	max = MinUint
    55  	for _, i := range a {
    56  		if i > max {
    57  			max = i
    58  		}
    59  	}
    60  	return
    61  }
    62  
    63  // Return the exp'th power of base.
    64  func Pow(base int, exp byte) (r int) {
    65  	r = 1
    66  	for exp > 0 {
    67  		if exp&1 != 0 {
    68  			r *= base
    69  		}
    70  		exp >>= 1
    71  		base *= base
    72  	}
    73  
    74  	return
    75  }
    76  
    77  // Returns the nth power of 4.
    78  func Pow4(n int) uint {
    79  	return uint(1) << (2 * uint(n))
    80  }
    81  
    82  // Returns the log base 4 of x.
    83  func Log4(x float64) float64 {
    84  	return math.Log(x) / Ln4
    85  }