@Sherlock9 if z=a+ib, then the real and imaginary parts of z^2 = a^2-b^2 + i2ab are two elements from the triple. the third one could be extracted from z × conj(z)
@Sherlock9 ¨ is only bad when it's used on an array with many items. Here it's used on just 2 items, in which case ¨ itself doesn't cost pretty much anything, and you're losing performance with ↑ having to copy items around