【Swift4】Expression was too complex to be solved in reasonable time;というエラーが出た時の対処法

Swiftでは別の型同士の四則演算はできません。
基本的には型を揃えた状態での計算をしないと以下のようなエラーのなります。

Binary operator ‘+’ cannot be applied to operands of type ‘Int’ and ‘Float’
Binary operator ‘-‘ cannot be applied to operands of type ‘Float’ and ‘CGFloat’
Binary operator ‘*’ cannot be applied to operands of type ‘CGFloat’ and ‘Double’
Binary operator ‘/’ cannot be applied to operands of type ‘Float’ and ‘Double’

短い計算であれば、上記のように別の型で計算しているというエラーになりますが、計算式が複雑になると以下のようなエラーになる場合があります。

Expression was too complex to be solved in reasonable time;
consider breaking up the expression into distinct sub-expressions

英訳すると「 計算が複雑すぎ、型の推論に時間がかかりました。
式を異なるサブ式に分割することを検討してください。」とのことです。

つまり、エラーなんだけど、計算式が複雑で、どの型とどの型で計算しようとしているのか詳しいエラーをだせないよ!という感じです。

Expression was too complex to be solved in reasonable time;というエラーが出た時の対処法

対処法は簡単で型を明示的にキャストしてあげることで防げます。
上記サンプルプログラムでは全ての変数をFloat()で明示的にキャストしています。

たったこれだけでエラーはでなくなります。