-#include "axes.hh"
-#include "string.hh"
-
-Offset complex_multiply (Offset, Offset);
-Offset complex_divide (Offset, Offset);
-Offset complex_exp (Offset);
+#include "axis.hh"
+#include "std-string.hh"
+#include "real.hh"
-
-This is a mixture a 2D vector. Sometimes it can
-also be convenient to think of 2D vectors as complex numbers
-(ie. x + i y). The naming of some methods reflects that.
-
+ This is a mixture a 2D vector. Sometimes it can
+ also be convenient to think of 2D vectors as complex numbers
+ (ie. x + i y). The naming of some methods reflects that.
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, +);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, -);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, *);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, +);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, -);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, *);
-operator* (Real o1, Offset o2)
+Offset::operator *= (Offset z2)
+{
+ *this = complex_multiply (*this, z2);
+ return *this;
+}
+
+inline Offset
+operator * (Real o1, Offset o2)