quint64 findDerivative(const Audio::SignalSource &source, double der, int h) { //qDebug() << "first " << source.at(0); for (int i = h; i < source.size() - h; i += h) { auto d = d_f(source[i - h], source[i], source[i + h], h); auto d2 = d2_f(source[i - h], source[i], source[i + h], h); //qDebug() << "i = " << i << " d = " << d << "source[0]/source[i] " << source[0]/source[i]; if ( der < d && source[0]/source[i] > 1.5 ) { return i; } } qDebug() << "Cannot find derivative"; return -1; }
int evaluate(int t) { int err = 0; /* switch on lookup */ switch(t) { case '+': case '-': case '*': case '/': /* binaere rechenoperation */ /* wenn fehlerwert zurueckgegeben wird wird die fehlerroutine aufgerufen */ if((err = binop_f(t))) error(err); break; /* stack metafunctionen */ case 'p': if((err = p_f())) error(err); break; case 'f': if((err = f_f())) error(err); break; case 'c': if((err = c_f())) error(err); break; case 'd': if((err = d_f())) error(err); break; case 'r': if((err = r_f())) error(err); break; /* EOS fuer stdin oder 'q' -> quit */ case EOF: printf("Reached end of input.\n"); case 'q': printf("Goodbye.\n"); return FALSE; default: /* wenn lookup whitespace ist, ignorieren */ if(isws(t)) ; /* andernfalls wenn lookup eine ziffer ist zahl einlesen und auf den stack legen */ else if(isnum(t)) { uint v = 0; if((err = read_int(&v)) || (err = stack_push(v))) { error(err); } /* recursion damit der lookup nach einlesen der zahl nicht in main ueberschrieben wird. */ return evaluate(lookup(NULL)); } /* andernfalls ist ein unbekannter befehl eingelesen worden */ else { error(ERR_MAIN_UNKNOWN); } } return TRUE; }