real un_m_bezierr(real a, real q0, real q1, real b, real t) { real i0, i1, i2, p1, p2; i0 = un_m_lerpr(a, q0, t); i1 = un_m_lerpr(q0, q1, t); i2 = un_m_lerpr(q1, b, t); p1 = un_m_lerpr(i0, i1, t); p2 = un_m_lerpr(i1, i2, t); return un_m_lerpr(p1, p2, t); } f32 un_m_bezierf(f32 a, f32 q0, f32 q1, f32 b, f32 t) { f32 i0, i1, i2, p1, p2; i0 = un_m_lerpf(a, q0, t); i1 = un_m_lerpf(q0, q1, t); i2 = un_m_lerpf(q1, b, t); p1 = un_m_lerpf(i0, i1, t); p2 = un_m_lerpf(i1, i2, t); return un_m_lerpf(p1, p2, t); } f64 un_m_bezierd(f64 a, f64 q0, f64 q1, f64 b, f64 t) { f64 i0, i1, i2, p1, p2; i0 = un_m_lerpd(a, q0, t); i1 = un_m_lerpd(q0, q1, t); i2 = un_m_lerpd(q1, b, t); p1 = un_m_lerpd(i0, i1, t); p2 = un_m_lerpd(i1, i2, t); return un_m_lerpd(p1, p2, t); } // add v2-4 variants