/***************************************************************************
                          gauss.h  -  description
                             -------------------
    begin                : Mit Jul 23 2003
    copyright            : (C) 2003 by klaus frieler
    email                : kgf@omniversum.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef _GAUSS_H
#define _GAUSS_H

bool        initGauss();
void        exitGauss();
double      fastGauss(double t);
double      gauss(double t);

data        gaussFourier(const data& vec, const data& koeffs, double step, double sigma);
data        gaussFourier(const data& vec, const data& koeffs, uint max, double step, double sigma);
data        getGaussSuperposition(const data& vec, const data &koeffs, double step, double sigma);
data        getGaussSuperposition(const double dT, const double phase, const uint count, const data &koeffs, double step, double sigma);
data        gaussAutoCorrelation(const data &vec, double cut, double step, double sigma);
data        gaussAutoCorrelation(const data &vec, const data& coeff, double cut, double step, double sigma);

double      gaussMatch(const data &vec, const data &accents, const double dT, double phase, const data& accentPattern, double sigma);
double      gaussNorm(const data &vec, const data &coeff, double sigma);
double      gaussNorm(const double dT, const data &coeff, double sigma);
double      gaussNorm(const data &vec, double sigma);
double      gaussCrossCorrelation(const data& tp1, const data& tp2, double sigma, double tau);
double      gaussCrossCorrelation(const data& tp1, const data &koeffs1, const data& tp2, const data &koeffs2, double sigma, double tau);
double metricSimilarity(uint n1, uint n2, double sigma, double T);

#endif
