function reduceBasis(b1,b2) {
function dp(u,v) {
return u[0]*v[0] + u[1]*v[1];
}
let B1 = dp(b1,b1);
let mu = Math.round(dp(b1,b2)/B1);
b2[0] -= mu * b1[0];
b2[1] -= mu * b1[1];
let B2 = dp(b2,b2);
while (B2 < B1) {
[b1,b2] = [b2,b1];
B1 = B2;
mu = Math.round(dp(b1,b2)/B1);
b2[0] -= mu * b1[0];
b2[1] -= mu * b1[1];
B2 = dp(b2,b2);
}
return [b1,b2];
}