Io per quel controllo scrissi una brevissima funzione che eseguiva il prodotto f(a)*f(b) e se questo era > 0 restituiva un valore nullo al main, nel quale c'era un ciclo iterativo di immissione simile a quello che fai tu... insomma al massimo puoi implementare questa funzione per una questione di eleganza, o forse meglio ancora una macro visto che dichiarare una funzione solo per un'istruzione forse è un po' esagerato.

Di meglio credo non si possa fare.