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: negative_exponential.go
    path of file: ./repos/hubble-ui/backend/pkg/delays
    
    the code of the file until where you have to start completion: package delays

import (
	"fmt"
	"math"
)

// NOTE: d(x) = a + b * exp(-steep * x)
type NegativeExponential struct {
	a     float64
	b     float64
	steep float64
}

// NOTE: Bigger steep leads to faster descent
f
    
func NewNegativeExponential(min, max, steep float64) (*NegativeExponential, error) {
	if tooSmall(steep) {
		return nil, fmt.Errorf(
			"cannot build NegativeExponential: steep parameter cannot be zero",
		)
	}

	powerOfE := math.Exp(steep)
	denom := (1 - powerOfE) / powerOfE

	b := (min - max) / denom
	a := (max/powerOfE - min) / denom

	return &NegativeExponential{
		a:     a,
		b:     b,
		steep: steep,
	}, nil
}