You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

52 lines
1.2 KiB

void f_alpha(int n_pts, int n_exp, float X[], float Q_d,
float alpha);
void rvfft(float X[], unsigned long int n);
#define TRNOISE_STATE_MEM_LEN 4
struct trnoise_state
{
double points[TRNOISE_STATE_MEM_LEN];
size_t top;
double NA, TS, NAMP, NALPHA, RTSAM, RTSCAPT, RTSEMT;
float *oneof;
size_t oneof_length;
double RTScapTime, RTSemTime;
bool RTS;
};
struct trnoise_state *trnoise_state_init(double NA, double TS, double NALPHA, double NAMP, double RTSAM, double RTSCAPT, double RTSEMT);
void trnoise_state_gen(struct trnoise_state *this, CKTcircuit *ckt);
void trnoise_state_free(struct trnoise_state *this);
static inline void
trnoise_state_push(struct trnoise_state *this, double val)
{
this->points[this->top++ % TRNOISE_STATE_MEM_LEN] = val;
}
static inline double
trnoise_state_get(struct trnoise_state *this, CKTcircuit *ckt, size_t index)
{
while(index >= this->top)
trnoise_state_gen(this, ckt);
if(index + TRNOISE_STATE_MEM_LEN < this->top) {
fprintf(stderr, "ouch, trying to fetch from the past %d %d\n",
(int)index, (int)this->top);
exit(1);
}
return this->points[index % TRNOISE_STATE_MEM_LEN];
}