package rms

import (
	"encoding/binary"
	"math"
)

func RMS(voicedata []byte) float64 {
	var rms, sum, average float64
	rms = 0.0
	sum = 0.0
	length := len(voicedata)

	if length <= 0 {
		return 0.0
	}

	length /= 2

	for iter := 0; iter < length; iter++ {
		uval := binary.LittleEndian.Uint16(voicedata[iter*2 : iter*2+2])
		sval := int16(uval)
		pval := math.Pow(float64(sval), 2)
		sum += pval
	}
	average = sum / float64(length)

	/*
			for iter := 0; iter < length; iter++ {
				summs += math.Pow(float64(voicedata[iter])-average, float64(2))
			}
		avgms = summs / float64(length)
	*/

	rms = math.Sqrt(average)

	return rms
}