#ifndef __BTBT_H__
#define __BTBT_H__
#ifndef __UTILITIES_H__
#include "utilities.h"
#endif
#ifndef __ATMOSPHERE_H__
#include "atmosphere.h"
#endif
struct BTBT {
int M, N, MT, MT2, NT, NT2, NU, NU2, NDFT, HALF_NDFT, NU_TOTAL, NF, NF2, ind_size, cov_size;
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 BTBT_DEBUG
float2 *cov;
unsigned int *mu, *xi;
#endif
void setup(int n_x);
void setup(int M_, int N_, int NT_, float *d__cov_);
void setup(int M_, int N_, int MT_, int NT_, float *d__cov_);
void cleanup(void);
void info(void);
void MVM(float *y, float *x);
void MVM_i(float *y, float *x);
void MVM_ii(float *y, float *x);
void MVM_iii(float *y, float *x);
void MVM_iv(float *y, float *x);
void MVM_v(float *y, float *x);
};
#endif