axamon/ramses

View on GitHub
algoritmi/derive.go

Summary

Maintainability
A
0 mins
Test Coverage
package algoritmi

import (
    "gonum.org/v1/gonum/stat"
)

//Derive execute the first derivate of the serie
func Derive(serie []float64) (dserie []float64, err error) {
    length := len(serie)
    limit := length - 1
    dserie = make([]float64, length)
    for i := 0; i < limit; i++ {
        dserie[i] = serie[i+1] - serie[i]
    }
    meandserie := stat.Mean(dserie, nil)
    dserie[limit] = meandserie
    return dserie, err
}

//Derive2 execute the second derivate of the serie
func Derive2(serie []float64) (ddserie []float64, err error) {

    dserie, err := Derive(serie)
    ddserie, err = Derive(dserie)

    return ddserie, err
}

//Derive3 execute the third derivate of the serie
func Derive3(serie []float64) (dddserie []float64, err error) {

    dserie, err := Derive(serie)
    ddserie, err := Derive(dserie)
    dddserie, err = Derive(ddserie)

    return dddserie, err
}