#include "linalg.h" f2 f2_from_f3(f3 v) { return (f2) { v.x, v.y }; } i2 i2_from_f2(f2 v) { return (i2) { (int)v.x, (int)v.y }; } f3 add_f3(f3 l, f3 r) { return (f3) { l.x + r.x, l.y + r.y, l.z + r.z }; } f2 mul_f2_f2x2(f2 l, f2x2 r) { return (f2) { l.x * r.xx + l.y * r.xy, l.x * r.yx + l.y * r.yy, }; } f3 mul_f3_f3x3(f3 l, f3x3 r) { return (f3) { l.x * r.xx + l.y * r.xy + l.z * r.xz, l.x * r.yx + l.y * r.yy + l.z * r.yz, l.x * r.zx + l.y * r.zy + l.z * r.zz, }; }