Meglio, la colpa e' SEMPRE del programmatore.
Esiste, ovviamente, la possibilita' che ci sia un errore a livello hardware, ma e'piu' probabile incontrare un alieno che rilevare un errore del genere.
Per quanto riguarda i calcoli complessi, mettiamola in modo piu' preciso:
che tipo di errori si possono avere in un algoritmo che cicla miliardi di volte?
Errori di arrotondamento: poiche' i numeri con la virgola sono rappresentati con un numero fisso di cifre decimali, anche un piccolo errore, se lo moltiplichi per 10^9 (o valori anche piu' grandi) prima o poi puo' diventare talmente grande da nascondere il VERO valore che si voleva calcolare.
MA esiste un'intero settore dell'informatica, quello che si chiama calcolo numerico, che si occupa, appunto, di identificare i modi piu' intelligenti per fare i conti in modo da minimizzare l'accumulto di questi errori.