示例#1
0
// binary
// 23 = 10111
// special case if n==0 then return empty slice
// panic if n<0
func Binary(n int64) (bin []int) {

	var s int64

	if n < 0 {
		panic("binary representation of number smaller than 0")
	} else if n == 0 {
		s = 0
	} else {
		s = int64(math.Logb(float64(n))) + 1
	}

	bin = make([]int, s)

	i := 0
	var m int64

	for n != 0 {
		m = n / 2
		//fmt.Println(i, n, m)
		if n != m*2 {
			bin[i] = 1
		}
		n = m
		i++
	}
	return
}
示例#2
0
func (ti *TouchInfo) Name() string {
	if int(ti.TouchVal) > 0 {
		i := int(math.Logb(float64(ti.TouchVal)))
		if i < len(TouchList) {
			return TouchList[i]
		}
	}
	return "None"
}
示例#3
0
func TestDictionaryDefaultSize(t *testing.T) {
	words := testMakeWordSlice(50)
	dict := NewDictionaryWords(words)

	expectedSize := int(math.Logb(float64(len(words))))

	if dict.Size() != expectedSize {
		t.Errorf("Size() == %d, want %d", dict.Size(), expectedSize)
	}
}
示例#4
0
func NewDictionaryWords(words []string) *Dictionary {
	count := len(words)
	maxSize := int(math.Logb(float64(count)))

	dict := &Dictionary{
		words:   words,
		size:    maxSize,
		maxSize: maxSize,
		seed:    0,
	}

	return dict
}
示例#5
0
func newOtfHeader(scalerType Tag, numTables uint16) *otfHeader {

	// http://www.opensource.apple.com/source/ICU/ICU-491.11.3/icuSources/layout/KernTable.cpp?txt
	entrySelector := uint16(math.Logb(float64(numTables)))
	searchRange := ((1 << entrySelector) * uint16(16))
	rangeShift := (numTables * uint16(16)) - searchRange

	return &otfHeader{
		ScalerType:    scalerType,
		NumTables:     numTables,
		EntrySelector: entrySelector,
		SearchRange:   searchRange,
		RangeShift:    rangeShift,
	}

}
示例#6
0
func TestNewDictionaryWords(t *testing.T) {
	words := testMakeWordSlice(30)
	dict := NewDictionaryWords(words)

	if !testSlicesEqual(dict.words, words) {
		t.Error("dict.words != words")
	}

	expectedSize := int(math.Logb(float64(len(words))))
	if dict.size != expectedSize {
		t.Errorf("dict.size == %d, want %d", dict.size, expectedSize)
	}

	if dict.size != dict.maxSize {
		t.Error("dict.size != dict.maxSize")
	}
}
示例#7
0
func (d *Dictionary) readIn(r io.Reader) {
	d.words = make([]string, 0, 1<<uint(d.size))

	scanner := bufio.NewScanner(r)
	for scanner.Scan() {
		if err := scanner.Err(); err != nil && err != io.EOF {
			break
		}

		d.words = append(d.words, scanner.Text())
	}

	count := len(d.words)
	d.maxSize = int(math.Logb(float64(count)))

	d.size = d.maxSize
}
示例#8
0
文件: logbf.go 项目: ungerik/fmath
// float32 version of math.Logbf
func Logb(x float32) float32 {
	return float32(math.Logb(float64(x)))
}
示例#9
0
func calculateMaxBackoffCount(maxDuration time.Duration) int {
	total := math.Ceil(float64(maxDuration) / float64(CrashBackoffMinDuration))
	return int(math.Logb(total))
}