You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: range.go
    path of file: ./repos/ferret/pkg/stdlib/math
    
    the code of the file until where you have to start completion: package math

import (
	"context"

	"github.com/MontFerret/ferret/pkg/runtime/core"
	"github.com/MontFerret/ferret/pkg/runtime/values"
	"github.com/MontFerret/ferret/pkg/runtime/values/types"
)

// RANGE returns an array of numbers in the specified range, optionally with increments other than 1.
// @param {Int | Float} start - The value to start the range at (inclusi
    
func Range(_ context.Context, args ...core.Value) (core.Value, error) {
	err := core.ValidateArgs(args, 2, 3)

	if err != nil {
		return values.None, err
	}

	err = core.ValidateType(args[0], types.Int, types.Float)

	if err != nil {
		return values.None, err
	}

	err = core.ValidateType(args[1], types.Int, types.Float)

	if err != nil {
		return values.None, err
	}

	var step float64 = 1

	if len(args) > 2 {
		err = core.ValidateType(args[2], types.Int, types.Float)

		if err != nil {
			return values.None, err
		}

		step = toFloat(args[2])
	}

	start := toFloat(args[0])
	end := toFloat(args[1])

	arr := values.NewArray(int(end))

	for i := start; i <= end; i += step {
		arr.Push(values.NewFloat(i))
	}

	return arr, nil
}