#ifndef HANDMADE_MATH_H #define HANDMADE_MATH_H typedef struct v2 { F32 X, Y; F32 E[2]; } v2; v2 V2(F32 X, F32 Y) { v2 Result; Result.X = X; Result.Y = Y; return Result; } v2 V2Multiply(F32 A, v2 B) { v2 Result; Result.X = A * B.X; Result.Y = A * B.Y; return Result; } v2 V2Unary(v2 A) { v2 Result; Result.X = -A.X; Result.Y = -A.Y; return Result; } v2 V2Add(v2 A, v2 B) { v2 Result; Result.X = A.X + B.X; Result.Y = A.Y + B.Y; return Result; } v2 V2Subtract(v2 A, v2 B) { v2 Result; Result.X = A.X - B.X; Result.Y = A.Y - B.Y; return Result; } F32 Square(F32 A) { F32 Result; Result = A * A; return Result; } F32 InnerProduct(v2 A, v2 B) { F32 Result = A.X*B.X + A.Y*B.Y; return Result; } #endif