Maggiori informazioni sarebbero gradite. In ogni caso stai evidentemente calcolando dei valori di Z che non è necessario calcolare in quanto saranno settati a 0 o a 1, lo stesso può valere per altri valori che potrebbero essere necessari solo al calcolo di questi valori di Z.

Il primo loop può essere diviso in due loop distinti per le due condizioni che sono mutualmente esclusive, ciò elimina delle condizioni e anche dei cicli inutili in cui non faresti comunque nulla.

Questo è quello che vedo a colpo d'occhio, potrebbe esserci altro ma sarebbe utile del contesto e del codice indentato.