// Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package stats // DeltaDist is the Dirac delta function, centered at T, with total // area 1. // // The CDF of the Dirac delta function is the Heaviside step function, // centered at T. Specifically, f(T) == 1. type DeltaDist struct { T float64 } func (d DeltaDist) PDF(x float64) float64 { if x == d.T { return inf } return 0 } func (d DeltaDist) pdfEach(xs []float64) []float64 { res := make([]float64, len(xs)) for i, x := range xs { if x == d.T { res[i] = inf } } return res } func (d DeltaDist) CDF(x float64) float64 { if x >= d.T { return 1 } return 0 } func (d DeltaDist) cdfEach(xs []float64) []float64 { res := make([]float64, len(xs)) for i, x := range xs { res[i] = d.CDF(x) } return res } func (d DeltaDist) InvCDF(y float64) float64 { if y < 0 || y > 1 { return nan } return d.T } func (d DeltaDist) Bounds() (float64, float64) { return d.T - 1, d.T + 1 }