Index: libcfa/src/vec/vec3.hfa
===================================================================
--- libcfa/src/vec/vec3.hfa	(revision 7799f797c8abf2c4e812fa8a03dbab0975bc964f)
+++ libcfa/src/vec/vec3.hfa	(revision ae09808982826f9762dcb49b7658c22d1767683a)
@@ -71,5 +71,5 @@
     }
 
-    // Scalar Multiplication
+    // Multiplication
     forall(| multiply(T)) {
     vec3(T) ?*?(vec3(T) v, T scalar) with (v) { // TODO (can't make this const ref)
@@ -79,18 +79,32 @@
         return v * scalar;
     }
+    vec3(T) ?*?(vec3(T) u, vec3(T) v) {
+        return [u.x * v.x, u.y * v.y, u.z * v.z];
+    }
     vec3(T)& ?*=?(vec3(T)& v, T scalar) {
         v = v * scalar;
         return v;
     }
+    vec3(T)& ?*=?(vec3(T)& u, vec3(T) v) {
+        u = u * v;
+        return u;
+    }
     }
 
-    // Scalar Division
+    // Division
     forall(| divide(T)) {
     vec3(T) ?/?(vec3(T) v, T scalar) with (v) {
         return [x / scalar, y / scalar, z / scalar];
     }
+    vec3(T) ?/?(vec3(T) u, vec3(T) v) {
+        return [u.x / v.x, u.y / v.y, u.z / v.z];
+    }
     vec3(T)& ?/=?(vec3(T)& v, T scalar) with (v) {
         v = v / scalar;
         return v;
+    }
+    vec3(T)& ?/=?(vec3(T)& u, vec3(T) v) {
+        u = u / v;
+        return u;
     }
     }
Index: tests/vector/.expect/vec3_float.txt
===================================================================
--- tests/vector/.expect/vec3_float.txt	(revision 7799f797c8abf2c4e812fa8a03dbab0975bc964f)
+++ tests/vector/.expect/vec3_float.txt	(revision ae09808982826f9762dcb49b7658c22d1767683a)
@@ -14,6 +14,10 @@
 s*v:<4.5,8.25,300.9>
 ?*=?:<4.5,8.25,300.9>
+?*?(vec):<2.,6.,13.5>
+?*=?(vec):<2.,6.,13.5>
 ?/?:<0.666667,-0.0333333,15.>
 ?/=?:<0.666667,-0.0333333,15.>
+?/?(vec):<1.,-0.0333333,0.666667>
+?/=?(vec):<1.,-0.0333333,0.666667>
 dot_1:0.
 dot_2:37.8
Index: tests/vector/vec3_float.cfa
===================================================================
--- tests/vector/vec3_float.cfa	(revision 7799f797c8abf2c4e812fa8a03dbab0975bc964f)
+++ tests/vector/vec3_float.cfa	(revision ae09808982826f9762dcb49b7658c22d1767683a)
@@ -47,4 +47,11 @@
     sout | "?*=?:" | v1;
 
+    {
+        vec3(float) u = {1, 2, 3};
+        vec3(float) v = {2, 3, 4.5f};
+        sout | "?*?(vec):" | (u * v);
+        sout | "?*=?(vec):" | (u *= v);
+    }
+
     v1 = (vec3(float)){2, -0.1f, 45};
     sout | "?/?:" | (v1 / 3.f);
@@ -52,4 +59,11 @@
     v1 /= 3.f;
     sout | "?/=?:" | v1;
+
+    {
+        vec3(float) u = {2, -0.1f, 3};
+        vec3(float) v = {2, 3, 4.5f};
+        sout | "?/?(vec):" | (u / v);
+        sout | "?/=?(vec):" | (u /= v);
+    }
 
     v1 = (vec3(float)){4,2,3};
