// Code generated by vm/runtime/helpers/main.go. DO NOT EDIT. package runtime import ( "fmt" "reflect" "time" ) func Equal(a, b interface{}) bool { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case int: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case int8: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case int16: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case int32: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case int64: switch y := b.(type) { case uint: return int(x) == int(y) case uint8: return int(x) == int(y) case uint16: return int(x) == int(y) case uint32: return int(x) == int(y) case uint64: return int(x) == int(y) case int: return int(x) == int(y) case int8: return int(x) == int(y) case int16: return int(x) == int(y) case int32: return int(x) == int(y) case int64: return int(x) == int(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) == float64(y) case uint8: return float64(x) == float64(y) case uint16: return float64(x) == float64(y) case uint32: return float64(x) == float64(y) case uint64: return float64(x) == float64(y) case int: return float64(x) == float64(y) case int8: return float64(x) == float64(y) case int16: return float64(x) == float64(y) case int32: return float64(x) == float64(y) case int64: return float64(x) == float64(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) == float64(y) case uint8: return float64(x) == float64(y) case uint16: return float64(x) == float64(y) case uint32: return float64(x) == float64(y) case uint64: return float64(x) == float64(y) case int: return float64(x) == float64(y) case int8: return float64(x) == float64(y) case int16: return float64(x) == float64(y) case int32: return float64(x) == float64(y) case int64: return float64(x) == float64(y) case float32: return float64(x) == float64(y) case float64: return float64(x) == float64(y) } case string: switch y := b.(type) { case string: return x == y } case time.Time: switch y := b.(type) { case time.Time: return x.Equal(y) } } if IsNil(a) && IsNil(b) { return true } return reflect.DeepEqual(a, b) } func Less(a, b interface{}) bool { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case int: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case int8: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case int16: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case int32: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case int64: switch y := b.(type) { case uint: return int(x) < int(y) case uint8: return int(x) < int(y) case uint16: return int(x) < int(y) case uint32: return int(x) < int(y) case uint64: return int(x) < int(y) case int: return int(x) < int(y) case int8: return int(x) < int(y) case int16: return int(x) < int(y) case int32: return int(x) < int(y) case int64: return int(x) < int(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) < float64(y) case uint8: return float64(x) < float64(y) case uint16: return float64(x) < float64(y) case uint32: return float64(x) < float64(y) case uint64: return float64(x) < float64(y) case int: return float64(x) < float64(y) case int8: return float64(x) < float64(y) case int16: return float64(x) < float64(y) case int32: return float64(x) < float64(y) case int64: return float64(x) < float64(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) < float64(y) case uint8: return float64(x) < float64(y) case uint16: return float64(x) < float64(y) case uint32: return float64(x) < float64(y) case uint64: return float64(x) < float64(y) case int: return float64(x) < float64(y) case int8: return float64(x) < float64(y) case int16: return float64(x) < float64(y) case int32: return float64(x) < float64(y) case int64: return float64(x) < float64(y) case float32: return float64(x) < float64(y) case float64: return float64(x) < float64(y) } case string: switch y := b.(type) { case string: return x < y } case time.Time: switch y := b.(type) { case time.Time: return x.Before(y) } } panic(fmt.Sprintf("invalid operation: %T < %T", a, b)) } func More(a, b interface{}) bool { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case int: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case int8: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case int16: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case int32: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case int64: switch y := b.(type) { case uint: return int(x) > int(y) case uint8: return int(x) > int(y) case uint16: return int(x) > int(y) case uint32: return int(x) > int(y) case uint64: return int(x) > int(y) case int: return int(x) > int(y) case int8: return int(x) > int(y) case int16: return int(x) > int(y) case int32: return int(x) > int(y) case int64: return int(x) > int(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) > float64(y) case uint8: return float64(x) > float64(y) case uint16: return float64(x) > float64(y) case uint32: return float64(x) > float64(y) case uint64: return float64(x) > float64(y) case int: return float64(x) > float64(y) case int8: return float64(x) > float64(y) case int16: return float64(x) > float64(y) case int32: return float64(x) > float64(y) case int64: return float64(x) > float64(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) > float64(y) case uint8: return float64(x) > float64(y) case uint16: return float64(x) > float64(y) case uint32: return float64(x) > float64(y) case uint64: return float64(x) > float64(y) case int: return float64(x) > float64(y) case int8: return float64(x) > float64(y) case int16: return float64(x) > float64(y) case int32: return float64(x) > float64(y) case int64: return float64(x) > float64(y) case float32: return float64(x) > float64(y) case float64: return float64(x) > float64(y) } case string: switch y := b.(type) { case string: return x > y } case time.Time: switch y := b.(type) { case time.Time: return x.After(y) } } panic(fmt.Sprintf("invalid operation: %T > %T", a, b)) } func LessOrEqual(a, b interface{}) bool { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case int: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case int8: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case int16: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case int32: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case int64: switch y := b.(type) { case uint: return int(x) <= int(y) case uint8: return int(x) <= int(y) case uint16: return int(x) <= int(y) case uint32: return int(x) <= int(y) case uint64: return int(x) <= int(y) case int: return int(x) <= int(y) case int8: return int(x) <= int(y) case int16: return int(x) <= int(y) case int32: return int(x) <= int(y) case int64: return int(x) <= int(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) <= float64(y) case uint8: return float64(x) <= float64(y) case uint16: return float64(x) <= float64(y) case uint32: return float64(x) <= float64(y) case uint64: return float64(x) <= float64(y) case int: return float64(x) <= float64(y) case int8: return float64(x) <= float64(y) case int16: return float64(x) <= float64(y) case int32: return float64(x) <= float64(y) case int64: return float64(x) <= float64(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) <= float64(y) case uint8: return float64(x) <= float64(y) case uint16: return float64(x) <= float64(y) case uint32: return float64(x) <= float64(y) case uint64: return float64(x) <= float64(y) case int: return float64(x) <= float64(y) case int8: return float64(x) <= float64(y) case int16: return float64(x) <= float64(y) case int32: return float64(x) <= float64(y) case int64: return float64(x) <= float64(y) case float32: return float64(x) <= float64(y) case float64: return float64(x) <= float64(y) } case string: switch y := b.(type) { case string: return x <= y } case time.Time: switch y := b.(type) { case time.Time: return x.Before(y) || x.Equal(y) } } panic(fmt.Sprintf("invalid operation: %T <= %T", a, b)) } func MoreOrEqual(a, b interface{}) bool { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case int: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case int8: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case int16: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case int32: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case int64: switch y := b.(type) { case uint: return int(x) >= int(y) case uint8: return int(x) >= int(y) case uint16: return int(x) >= int(y) case uint32: return int(x) >= int(y) case uint64: return int(x) >= int(y) case int: return int(x) >= int(y) case int8: return int(x) >= int(y) case int16: return int(x) >= int(y) case int32: return int(x) >= int(y) case int64: return int(x) >= int(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) >= float64(y) case uint8: return float64(x) >= float64(y) case uint16: return float64(x) >= float64(y) case uint32: return float64(x) >= float64(y) case uint64: return float64(x) >= float64(y) case int: return float64(x) >= float64(y) case int8: return float64(x) >= float64(y) case int16: return float64(x) >= float64(y) case int32: return float64(x) >= float64(y) case int64: return float64(x) >= float64(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) >= float64(y) case uint8: return float64(x) >= float64(y) case uint16: return float64(x) >= float64(y) case uint32: return float64(x) >= float64(y) case uint64: return float64(x) >= float64(y) case int: return float64(x) >= float64(y) case int8: return float64(x) >= float64(y) case int16: return float64(x) >= float64(y) case int32: return float64(x) >= float64(y) case int64: return float64(x) >= float64(y) case float32: return float64(x) >= float64(y) case float64: return float64(x) >= float64(y) } case string: switch y := b.(type) { case string: return x >= y } case time.Time: switch y := b.(type) { case time.Time: return x.After(y) || x.Equal(y) } } panic(fmt.Sprintf("invalid operation: %T >= %T", a, b)) } func Add(a, b interface{}) interface{} { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case int: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case int8: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case int16: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case int32: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case int64: switch y := b.(type) { case uint: return int(x) + int(y) case uint8: return int(x) + int(y) case uint16: return int(x) + int(y) case uint32: return int(x) + int(y) case uint64: return int(x) + int(y) case int: return int(x) + int(y) case int8: return int(x) + int(y) case int16: return int(x) + int(y) case int32: return int(x) + int(y) case int64: return int(x) + int(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) + float64(y) case uint8: return float64(x) + float64(y) case uint16: return float64(x) + float64(y) case uint32: return float64(x) + float64(y) case uint64: return float64(x) + float64(y) case int: return float64(x) + float64(y) case int8: return float64(x) + float64(y) case int16: return float64(x) + float64(y) case int32: return float64(x) + float64(y) case int64: return float64(x) + float64(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) + float64(y) case uint8: return float64(x) + float64(y) case uint16: return float64(x) + float64(y) case uint32: return float64(x) + float64(y) case uint64: return float64(x) + float64(y) case int: return float64(x) + float64(y) case int8: return float64(x) + float64(y) case int16: return float64(x) + float64(y) case int32: return float64(x) + float64(y) case int64: return float64(x) + float64(y) case float32: return float64(x) + float64(y) case float64: return float64(x) + float64(y) } case string: switch y := b.(type) { case string: return x + y } case time.Time: switch y := b.(type) { case time.Duration: return x.Add(y) } case time.Duration: switch y := b.(type) { case time.Time: return y.Add(x) } } panic(fmt.Sprintf("invalid operation: %T + %T", a, b)) } func Subtract(a, b interface{}) interface{} { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case int: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case int8: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case int16: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case int32: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case int64: switch y := b.(type) { case uint: return int(x) - int(y) case uint8: return int(x) - int(y) case uint16: return int(x) - int(y) case uint32: return int(x) - int(y) case uint64: return int(x) - int(y) case int: return int(x) - int(y) case int8: return int(x) - int(y) case int16: return int(x) - int(y) case int32: return int(x) - int(y) case int64: return int(x) - int(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) - float64(y) case uint8: return float64(x) - float64(y) case uint16: return float64(x) - float64(y) case uint32: return float64(x) - float64(y) case uint64: return float64(x) - float64(y) case int: return float64(x) - float64(y) case int8: return float64(x) - float64(y) case int16: return float64(x) - float64(y) case int32: return float64(x) - float64(y) case int64: return float64(x) - float64(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) - float64(y) case uint8: return float64(x) - float64(y) case uint16: return float64(x) - float64(y) case uint32: return float64(x) - float64(y) case uint64: return float64(x) - float64(y) case int: return float64(x) - float64(y) case int8: return float64(x) - float64(y) case int16: return float64(x) - float64(y) case int32: return float64(x) - float64(y) case int64: return float64(x) - float64(y) case float32: return float64(x) - float64(y) case float64: return float64(x) - float64(y) } case time.Time: switch y := b.(type) { case time.Time: return x.Sub(y) } } panic(fmt.Sprintf("invalid operation: %T - %T", a, b)) } func Multiply(a, b interface{}) interface{} { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case uint8: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case uint16: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case uint32: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case uint64: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case int: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case int8: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case int16: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case int32: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case int64: switch y := b.(type) { case uint: return int(x) * int(y) case uint8: return int(x) * int(y) case uint16: return int(x) * int(y) case uint32: return int(x) * int(y) case uint64: return int(x) * int(y) case int: return int(x) * int(y) case int8: return int(x) * int(y) case int16: return int(x) * int(y) case int32: return int(x) * int(y) case int64: return int(x) * int(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) * float64(y) case uint8: return float64(x) * float64(y) case uint16: return float64(x) * float64(y) case uint32: return float64(x) * float64(y) case uint64: return float64(x) * float64(y) case int: return float64(x) * float64(y) case int8: return float64(x) * float64(y) case int16: return float64(x) * float64(y) case int32: return float64(x) * float64(y) case int64: return float64(x) * float64(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) * float64(y) case uint8: return float64(x) * float64(y) case uint16: return float64(x) * float64(y) case uint32: return float64(x) * float64(y) case uint64: return float64(x) * float64(y) case int: return float64(x) * float64(y) case int8: return float64(x) * float64(y) case int16: return float64(x) * float64(y) case int32: return float64(x) * float64(y) case int64: return float64(x) * float64(y) case float32: return float64(x) * float64(y) case float64: return float64(x) * float64(y) } } panic(fmt.Sprintf("invalid operation: %T * %T", a, b)) } func Divide(a, b interface{}) float64 { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case uint8: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case uint16: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case uint32: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case uint64: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case int: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case int8: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case int16: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case int32: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case int64: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case float32: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } case float64: switch y := b.(type) { case uint: return float64(x) / float64(y) case uint8: return float64(x) / float64(y) case uint16: return float64(x) / float64(y) case uint32: return float64(x) / float64(y) case uint64: return float64(x) / float64(y) case int: return float64(x) / float64(y) case int8: return float64(x) / float64(y) case int16: return float64(x) / float64(y) case int32: return float64(x) / float64(y) case int64: return float64(x) / float64(y) case float32: return float64(x) / float64(y) case float64: return float64(x) / float64(y) } } panic(fmt.Sprintf("invalid operation: %T / %T", a, b)) } func Modulo(a, b interface{}) int { switch x := a.(type) { case uint: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case uint8: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case uint16: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case uint32: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case uint64: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case int: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case int8: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case int16: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case int32: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } case int64: switch y := b.(type) { case uint: return int(x) % int(y) case uint8: return int(x) % int(y) case uint16: return int(x) % int(y) case uint32: return int(x) % int(y) case uint64: return int(x) % int(y) case int: return int(x) % int(y) case int8: return int(x) % int(y) case int16: return int(x) % int(y) case int32: return int(x) % int(y) case int64: return int(x) % int(y) } } panic(fmt.Sprintf("invalid operation: %T %% %T", a, b)) }