@ Hummel danke für den Tipp

Ich habe jetzt noch ein paar Tests gemacht (mit var und float). Den Grund für die falschen Werte habe ich gefunden.

Der Wert für "given_side" wird nur bis 1448 (bei var sogar nur bis 800) korrekt berrechnet. Erhöhe ich auf 1449 erhalte ich anstatt 2.099.601 das Ergebniss -2.094.703

Gibt es einen anderen Datentyp den ich verwenden kann? Aber ich befürchte das ich mir einen anderen Rechenweg suchen muss.