// Code generated by scalar/numeric.gen.go.tmpl. DO NOT EDIT.

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package scalar

import (
	
	
	
	

	
	
	
)

type Int8 struct {
	scalar
	Value int8
}

func ( *Int8) () []byte {
	return (*[arrow.Int8SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Int8) ( Scalar) bool {
	return .Value == .(*Int8).Value
}

func ( *Int8) () interface{} {
	return .Value
}

func ( *Int8) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Int8) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type int8 to type %s", )
}

func ( int8) *Int8 {
	return &Int8{scalar{Type: arrow.PrimitiveTypes.Int8, Valid: true}, }
}

type Int16 struct {
	scalar
	Value int16
}

func ( *Int16) () []byte {
	return (*[arrow.Int16SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Int16) ( Scalar) bool {
	return .Value == .(*Int16).Value
}

func ( *Int16) () interface{} {
	return .Value
}

func ( *Int16) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Int16) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type int16 to type %s", )
}

func ( int16) *Int16 {
	return &Int16{scalar{Type: arrow.PrimitiveTypes.Int16, Valid: true}, }
}

type Int32 struct {
	scalar
	Value int32
}

func ( *Int32) () []byte {
	return (*[arrow.Int32SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Int32) ( Scalar) bool {
	return .Value == .(*Int32).Value
}

func ( *Int32) () interface{} {
	return .Value
}

func ( *Int32) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Int32) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type int32 to type %s", )
}

func ( int32) *Int32 {
	return &Int32{scalar{Type: arrow.PrimitiveTypes.Int32, Valid: true}, }
}

type Int64 struct {
	scalar
	Value int64
}

func ( *Int64) () []byte {
	return (*[arrow.Int64SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Int64) ( Scalar) bool {
	return .Value == .(*Int64).Value
}

func ( *Int64) () interface{} {
	return .Value
}

func ( *Int64) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Int64) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type int64 to type %s", )
}

func ( int64) *Int64 {
	return &Int64{scalar{Type: arrow.PrimitiveTypes.Int64, Valid: true}, }
}

type Uint8 struct {
	scalar
	Value uint8
}

func ( *Uint8) () []byte {
	return (*[arrow.Uint8SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Uint8) ( Scalar) bool {
	return .Value == .(*Uint8).Value
}

func ( *Uint8) () interface{} {
	return .Value
}

func ( *Uint8) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Uint8) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type uint8 to type %s", )
}

func ( uint8) *Uint8 {
	return &Uint8{scalar{Type: arrow.PrimitiveTypes.Uint8, Valid: true}, }
}

type Uint16 struct {
	scalar
	Value uint16
}

func ( *Uint16) () []byte {
	return (*[arrow.Uint16SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Uint16) ( Scalar) bool {
	return .Value == .(*Uint16).Value
}

func ( *Uint16) () interface{} {
	return .Value
}

func ( *Uint16) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Uint16) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type uint16 to type %s", )
}

func ( uint16) *Uint16 {
	return &Uint16{scalar{Type: arrow.PrimitiveTypes.Uint16, Valid: true}, }
}

type Uint32 struct {
	scalar
	Value uint32
}

func ( *Uint32) () []byte {
	return (*[arrow.Uint32SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Uint32) ( Scalar) bool {
	return .Value == .(*Uint32).Value
}

func ( *Uint32) () interface{} {
	return .Value
}

func ( *Uint32) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Uint32) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromI64(int64(.Value)), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromI64(int64(.Value)), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type uint32 to type %s", )
}

func ( uint32) *Uint32 {
	return &Uint32{scalar{Type: arrow.PrimitiveTypes.Uint32, Valid: true}, }
}

type Uint64 struct {
	scalar
	Value uint64
}

func ( *Uint64) () []byte {
	return (*[arrow.Uint64SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Uint64) ( Scalar) bool {
	return .Value == .(*Uint64).Value
}

func ( *Uint64) () interface{} {
	return .Value
}

func ( *Uint64) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Uint64) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		return NewDecimal128Scalar(decimal128.FromU64(.Value), ), nil
	case *arrow.Decimal256Type:
		return NewDecimal256Scalar(decimal256.FromU64(.Value), ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type uint64 to type %s", )
}

func ( uint64) *Uint64 {
	return &Uint64{scalar{Type: arrow.PrimitiveTypes.Uint64, Valid: true}, }
}

type Float32 struct {
	scalar
	Value float32
}

func ( *Float32) () []byte {
	return (*[arrow.Float32SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Float32) ( Scalar) bool {
	return .Value == .(*Float32).Value
}

func ( *Float32) ( Scalar,  equalOption) bool {
	 := float64(.Value)
	 := float64(.(*Float32).Value)
	switch {
	case .nansEq:
		return  ==  || math.Abs(-) <= .atol || (math.IsNaN() && math.IsNaN())
	default:
		return  ==  || math.Abs(-) <= .atol
	}
}

func ( *Float32) () interface{} {
	return .Value
}

func ( *Float32) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Float32) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		,  := decimal128.FromFloat32(.Value, .Precision, .Scale)
		if  != nil {
			return nil, 
		}
		return NewDecimal128Scalar(, ), nil
	case *arrow.Decimal256Type:
		,  := decimal256.FromFloat32(.Value, .Precision, .Scale)
		if  != nil {
			return nil, 
		}
		return NewDecimal256Scalar(, ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type float32 to type %s", )
}

func ( float32) *Float32 {
	return &Float32{scalar{Type: arrow.PrimitiveTypes.Float32, Valid: true}, }
}

type Float64 struct {
	scalar
	Value float64
}

func ( *Float64) () []byte {
	return (*[arrow.Float64SizeBytes]byte)(unsafe.Pointer(&.Value))[:]
}

func ( *Float64) ( Scalar) bool {
	return .Value == .(*Float64).Value
}

func ( *Float64) ( Scalar,  equalOption) bool {
	 := float64(.Value)
	 := float64(.(*Float64).Value)
	switch {
	case .nansEq:
		return  ==  || math.Abs(-) <= .atol || (math.IsNaN() && math.IsNaN())
	default:
		return  ==  || math.Abs(-) <= .atol
	}
}

func ( *Float64) () interface{} {
	return .Value
}

func ( *Float64) () string {
	if !.Valid {
		return "null"
	}
	,  := .CastTo(arrow.BinaryTypes.String)
	if  != nil {
		return "..."
	}
	return string(.(*String).Value.Bytes())
}

func ( *Float64) ( arrow.DataType) (Scalar, error) {
	if !.Valid {
		return MakeNullScalar(), nil
	}

	,  := numericMap[.ID()]
	if  {
		return convertToNumeric(reflect.ValueOf(.Value), .valueType, .scalarFunc), nil
	}

	switch dt := .(type) {
	case *arrow.BooleanType:
		return NewBooleanScalar(.Value != 0), nil
	case *arrow.Date32Type:
		return NewDate32Scalar(arrow.Date32(.Value)), nil
	case *arrow.Date64Type:
		return NewDate64Scalar(arrow.Date64(.Value)), nil
	case *arrow.Time32Type:
		return NewTime32Scalar(arrow.Time32(.Value), ), nil
	case *arrow.Time64Type:
		return NewTime64Scalar(arrow.Time64(.Value), ), nil
	case *arrow.TimestampType:
		return NewTimestampScalar(arrow.Timestamp(.Value), ), nil
	case *arrow.MonthIntervalType:
		return NewMonthIntervalScalar(arrow.MonthInterval(.Value)), nil
	case *arrow.StringType:
		return NewStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.LargeStringType:
		return NewLargeStringScalar(fmt.Sprintf("%v", .Value)), nil
	case *arrow.Decimal128Type:
		,  := decimal128.FromFloat64(.Value, .Precision, .Scale)
		if  != nil {
			return nil, 
		}
		return NewDecimal128Scalar(, ), nil
	case *arrow.Decimal256Type:
		,  := decimal256.FromFloat64(.Value, .Precision, .Scale)
		if  != nil {
			return nil, 
		}
		return NewDecimal256Scalar(, ), nil
	}

	return nil, fmt.Errorf("invalid scalar cast from type float64 to type %s", )
}

func ( float64) *Float64 {
	return &Float64{scalar{Type: arrow.PrimitiveTypes.Float64, Valid: true}, }
}

var numericMap = map[arrow.Type]struct {
	scalarFunc reflect.Value
	valueType  reflect.Type
}{
	arrow.INT8:    {scalarFunc: reflect.ValueOf(NewInt8Scalar), valueType: reflect.TypeOf(int8(0))},
	arrow.INT16:   {scalarFunc: reflect.ValueOf(NewInt16Scalar), valueType: reflect.TypeOf(int16(0))},
	arrow.INT32:   {scalarFunc: reflect.ValueOf(NewInt32Scalar), valueType: reflect.TypeOf(int32(0))},
	arrow.INT64:   {scalarFunc: reflect.ValueOf(NewInt64Scalar), valueType: reflect.TypeOf(int64(0))},
	arrow.UINT8:   {scalarFunc: reflect.ValueOf(NewUint8Scalar), valueType: reflect.TypeOf(uint8(0))},
	arrow.UINT16:  {scalarFunc: reflect.ValueOf(NewUint16Scalar), valueType: reflect.TypeOf(uint16(0))},
	arrow.UINT32:  {scalarFunc: reflect.ValueOf(NewUint32Scalar), valueType: reflect.TypeOf(uint32(0))},
	arrow.UINT64:  {scalarFunc: reflect.ValueOf(NewUint64Scalar), valueType: reflect.TypeOf(uint64(0))},
	arrow.FLOAT32: {scalarFunc: reflect.ValueOf(NewFloat32Scalar), valueType: reflect.TypeOf(float32(0))},
	arrow.FLOAT64: {scalarFunc: reflect.ValueOf(NewFloat64Scalar), valueType: reflect.TypeOf(float64(0))},
}

var (
	_ Scalar = (*Int8)(nil)
	_ Scalar = (*Int16)(nil)
	_ Scalar = (*Int32)(nil)
	_ Scalar = (*Int64)(nil)
	_ Scalar = (*Uint8)(nil)
	_ Scalar = (*Uint16)(nil)
	_ Scalar = (*Uint32)(nil)
	_ Scalar = (*Uint64)(nil)
	_ Scalar = (*Float32)(nil)
	_ Scalar = (*Float64)(nil)
)