#ifndef PARALELL_INTERFACE_LINESADVCUDA_H
#define PARALELL_INTERFACE_LINESADVCUDA_H

#include "linesAdv.h"
#include <cuda_runtime.h>
#include <thrust/complex.h>
#include <thrust/reduce.h>
#include <thrust/device_ptr.h>

typedef thrust::complex<double> gpuCplx;

int PeakAdvCUDA(double *xs, long pointCount, double xLimit, double aLim, double bLim,
				double shape, double s, double x0, double wD, double w0, double d0, 
	 		    double w2, double d2, double nuVC, double eta, double Ylm, double* &gpu_xs, double* &gpu_ys);

int FuncAdvCUDA(double *xs, double *ys, long pointCount, size_t peakCount, double shape, double *inputVector, double* &gpu_xs, double* &gpu_ys);

void cleanUp(double *ys, long pointCount, double *gpu_xs, double *gpu_ys);

#endif //PARALELL_INTERFACE_LINESADVCUDA_H
