codice:
    sin = sin + (1/(fatt(i)))*pow(a, i)+(1/(fatt(i+2)))*pow(a, i+2)-(1/fatt(i+4))*pow(a, i+4);
il seno ha un'espansione in serie a segni alternati, questa formula è ovviamente sbagliata... Perché non scrivi semplicemente il termine generale in maniera esplicita e sommi quello? (possibilmente partendo dall'ultimo termine, in modo da sommare sempre valori di ordini di grandezza non troppo lontani; senza questa accortezza rischi che gli ultimi termini vengano mangiati dalla precisione dei double)

In ogni caso, anche aggiustando la formula, con Taylor più ti allontani dal centro della tua espansione in serie, maggiore sarà l'errore. Dato però che il seno è periodico, puoi sempre scrivere una espansione in serie con una buona approssimazione nel range -pi,+pi, e poi ridurre sempre il valore che ti viene passato a quel range a colpi di fmod.