#ifndef __GBTBT_H__
#define __GBTBT_H__
#ifndef __UTILITIES_H__
#include "utilities.h"
#endif
#ifndef __ATMOSPHERE_H__
#include "atmosphere.h"
#endif
struct GBTBT {
int M, N, NT, NT2, NDFT, HALF_NDFT, NU_TOTAL, NF, NF2,
ind_size, cov_size, MT2_TOTAL, MT_size, MAX_MT;
int *MT, *MT2, *NU, *NU2, *CS_MT2, *d__MT, *d__MT2,
*d__NU, *d__NU2, *d__CS_MT2;
char *mask;
float2 *d__cov, *d__b, *d__c;
float *d__alpha, *d__beta, n_full, n_comp, b_full, b_comp, cov_eval_et;
unsigned int *d__mu, *d__xi;
cufftHandle raster_plan, MVM_input_plan, MVM_output_plan;
#ifdef GBTBT_DEBUG
float2 *cov;
unsigned int *mu, *xi;
#endif
void setup(int n_x);
void setup(int M_, int N_, int NT_, const float *d__cov_);
void setup(int M_, int N_, int MT_, int NT_, const float *d__cov_);
void setup(int M_, int N_, int *MT_, int NT_, const float *d__cov_);
void cleanup(void);
void info(void);
void MVM(float *y, float *x);
};
#endif