,a)=>Math.cos(a/2) + Math.sin(a/2)*(1e12+1e12<<P^ei);

// Some identities
  var line_through_P_parallel_with_X = (P,X)=>X<<(P^ei)*(P^ei),
      project_point_on_circle        = (P,C)=>C<<(P^ei)*C,
      position                       = (C)=>C/(C^ei),
      radius                         = (C)=>(C*~C).s/((C<<ei)**2).s,
      attitude                       = (C)=>(ei^(C<<ei)),
      split                          = (PP)=>(1+attitude(PP)*radius(PP)*.5)>>>(PP/(PP<<ei));

// Define three points
  var p1 = point(