func (i Int) Int64() (_ int64, ok bool) {
	x, acc := bigintToInt64(i.bigint)
	if acc != big.Exact {
		return  
	}
	return x, true
}
Int64 returns the value as an int64.
If it is not exactly representable the result is undefined and ok is false.
package skylark
import (
	"fmt"
	"math"
	"math/big"
	"github.com/google/skylark/syntax"
)
type Int struct{ bigint *big.Int }
func MakeInt(x int) Int { return MakeInt64(int64(x)) }
func MakeInt64(x int64) Int {
	if 0 <= x && x < int64(len(smallint)) {
		if !smallintok {
			panic("MakeInt64 used before initialization")
		}
		return Int{&smallint[x]}
	}
	return Int{new(big.Int).SetInt64(x)}
}
func MakeUint(x uint) Int { return MakeUint64(uint64(x)) }
func MakeUint64(x uint64) Int {
	if x < uint64(len(smallint)) {
		if !smallintok {
			panic("MakeUint64 used before initialization")
		}
		return Int{&smallint[x]}
	}
	return Int{new(big.Int).SetUint64(uint64(x))}
}
var (
	smallint   [256]big.Int
	smallintok bool
	zero, one  Int
)
func init() {
	for i := range smallint {
		smallint[i].SetInt64(int64(i))
	}
	smallintok = true
	zero = MakeInt64(0)
	one = MakeInt64(1)
}