<< CliffordBasic`;
$SetSignature={3,0};
Import["https://raw.githubusercontent.com/jkuczm/MathematicaCellsToTeX/master/NoInstall.m"]

Reciprocal basis computation with conventional vector algebra.

x1={1,1};
x2={1,2};

r1 = ((x2.x2) x1 - (x1.x2) x2)/((x1.x1)(x2.x2) - (x1.x2)^2)
r2 = ((x1.x1) x2 - (x1.x2) x1)/((x1.x1)(x2.x2) - (x1.x2)^2)

{x1.r1,x2.r2,
x1.r2,x2.r1}

(*inverse := # / GeometricProduct[#,#] & ;*)
(*InnerProduct[#[[1]],#[[2]]]& /@ {{x1,s1},{x2,s2},{x1,s2},{x2,s1}}*)

Same calculation using bivectors

ClearAll[x1,x2,inverse]
x1=e[1] + e[2];x2=e[1] + 2 e[2];
x12 = OuterProduct[ x1,x2];
inverse[a_] := a/ GeometricProduct[a,a]  ;
x12inverse = inverse[x12];
s1 = InnerProduct[ x2, x12inverse];s2 = InnerProduct[ x1, -x12inverse];
s1
s2
dots[a_,b_] := {a , "·", b , " = ", InnerProduct[a// ReleaseHold, b// ReleaseHold]};
MapThread[dots,{{x1// HoldForm,x2// HoldForm,x1// HoldForm,x2// HoldForm} , {s1// HoldForm,s1// HoldForm,s2// HoldForm,s2// HoldForm}}]// Grid

Initial rough calculations (reformatted for display above) : Problem 2.2.

ClearAll[x1,x2,inverse, reciprocalFrame, s1, s2]

inverse := #/ GeometricProduct[#,#] & ;

reciprocalFrame[x1_, x2_] := Module[{ix12},
ix12 = OuterProduct[ x1,x2]//inverse;

{ InnerProduct[ x2, ix12],InnerProduct[ x1, -ix12]}
]

x1=e[1] + 2 e[2];x2=e[2]-e[3];
{s1,s2} = reciprocalFrame[x1, x2];
s1
s2
InnerProduct[#[[1]],#[[2]]]& /@ {{x1,s1},{x2,s2},{x1,s2},{x2,s1}}

Wolfgang seeing unexpected results for the following?

{e1,e2,e3} = {e[1],e[2],e[3]};
x1=e[1] + 2 e[2];x2=e[2]-e[3];
s1=1/3(e1+e2+e3) ;
s2=1/6*(-2*e1+1*e2-5*e3);
InnerProduct[#[[1]],#[[2]]]& /@ {{x1,s1},{x2,s2},{x1,s2},{x2,s1}}

Display the cells for latex

CellToTeX[Cell[BoxData[RowBox[{RowBox[{"(*",RowBox[{"same"," ","calculation"," ","using"," ","bivectors"}],"*)"}],"
",RowBox[{RowBox[{"ClearAll","[",RowBox[{"x1",",","x2",",","inverse"}],"]"}],"
",RowBox[{RowBox[{"x1","=",RowBox[{RowBox[{"e","[","1","]"}]," ","+"," ",RowBox[{"e","[","2","]"}]}]}],";",RowBox[{"x2","=",RowBox[{RowBox[{"e","[","1","]"}]," ","+"," ",RowBox[{"2"," ",RowBox[{"e","[","2","]"}]}]}]}],";"}],"
",RowBox[{RowBox[{"x12"," ","="," ",RowBox[{"OuterProduct","["," ",RowBox[{"x1",",","x2"}],"]"}]}],";"}],"
",RowBox[{RowBox[{RowBox[{"inverse","[","a_","]"}]," ",":="," ",RowBox[{"a","/"," ",RowBox[{"GeometricProduct","[",RowBox[{"a",",","a"}],"]"}]}]}],"  ",";"}],"
",RowBox[{RowBox[{"x12inverse"," ","="," ",RowBox[{"inverse","[","x12","]"}]}],";"}],"
",RowBox[{RowBox[{"s1"," ","="," ",RowBox[{"InnerProduct","["," ",RowBox[{"x2",","," ","x12inverse"}],"]"}]}],";",RowBox[{"s2"," ","="," ",RowBox[{"InnerProduct","["," ",RowBox[{"x1",","," ",RowBox[{"-","x12inverse"}]}],"]"}]}],";"}],"
","s1","
","s2","
",RowBox[{RowBox[{RowBox[{"dots","[",RowBox[{"a_",",","b_"}],"]"}]," ",":="," ",RowBox[{"{",RowBox[{"a"," ",","," ","\"\<·\>\"",","," ","b"," ",","," ","\"\< = \>\"",","," ",RowBox[{"InnerProduct","[",RowBox[{RowBox[{"a","//"," ","ReleaseHold"}],","," ",RowBox[{"b","//"," ","ReleaseHold"}]}],"]"}]}],"}"}]}],";"}],"
",RowBox[{RowBox[{"MapThread","[",RowBox[{"dots",",",RowBox[{"{",RowBox[{RowBox[{"{",RowBox[{RowBox[{"x1","//"," ","HoldForm"}],",",RowBox[{"x2","//"," ","HoldForm"}],",",RowBox[{"x1","//"," ","HoldForm"}],",",RowBox[{"x2","//"," ","HoldForm"}]}],"}"}]," ",","," ",RowBox[{"{",RowBox[{RowBox[{"s1","//"," ","HoldForm"}],",",RowBox[{"s1","//"," ","HoldForm"}],",",RowBox[{"s2","//"," ","HoldForm"}],",",RowBox[{"s2","//"," ","HoldForm"}]}],"}"}]}],"}"}]}],"]"}],"//"," ","Grid"}]}]}]],"Input",CellChangeTimes->{{3.727729176660578*^9,3.7277292720646048`*^9},{3.727729302173067*^9,3.727729340265267*^9},{3.727729372923046*^9,3.727729374992446*^9},{3.727729472479928*^9,3.727729539635421*^9},{3.7277333979607773`*^9,3.72773360419064*^9},{3.727733637005248*^9,3.727733660756687*^9},{3.7277341470943604`*^9,3.727734180202161*^9},{3.727735512355496*^9,3.727735534584099*^9},{3.7277355662569923`*^9,3.727735577142214*^9},{3.728467703236821*^9,3.728467716536518*^9},{3.728467758361147*^9,3.728467833741128*^9},{3.72846803253472*^9,3.728468138792323*^9},{3.728468181559258*^9,3.728468182524242*^9}}]]

CellToTeX[Cell[BoxData[RowBox[{RowBox[{"2"," ",RowBox[{"e","[","1","]"}]}],"-",RowBox[{"e","[","2","]"}]}]],"Output",CellChangeTimes->{3.727729540323201*^9,{3.7277335038162127`*^9,3.727733572830586*^9},3.727733661602697*^9,3.72773418437728*^9,3.72773429013249*^9,{3.7277355711464357`*^9,3.727735577873372*^9},3.728467557226215*^9,3.72846773799513*^9,3.728468057757498*^9,{3.728468111010084*^9,3.728468140638256*^9},3.728468183309657*^9}]]

CellToTeX[Cell[BoxData[RowBox[{RowBox[{"-",RowBox[{"e","[","1","]"}]}],"+",RowBox[{"e","[","2","]"}]}]],"Output",CellChangeTimes->{3.727729540323201*^9,{3.7277335038162127`*^9,3.727733572830586*^9},3.727733661602697*^9,3.72773418437728*^9,3.72773429013249*^9,{3.7277355711464357`*^9,3.727735577873372*^9},3.728467557226215*^9,3.72846773799513*^9,3.728468057757498*^9,{3.728468111010084*^9,3.728468140638256*^9},3.72846818332141*^9}]]

CellToTeX[Cell[BoxData[TagBox[GridBox[{{TagBox["x1",HoldForm],"\<\"·\"\>",TagBox["s1",HoldForm],"\<\" = \"\>","1"},{TagBox["x2",HoldForm],"\<\"·\"\>",TagBox["s1",HoldForm],"\<\" = \"\>","0"},{TagBox["x1",HoldForm],"\<\"·\"\>",TagBox["s2",HoldForm],"\<\" = \"\>","0"},{TagBox["x2",HoldForm],"\<\"·\"\>",TagBox["s2",HoldForm],"\<\" = \"\>","1"}},AutoDelete->False,GridBoxItemSize->{"Columns"->{{Automatic}},"Rows"->{{Automatic}}}],"Grid"]],"Output",CellChangeTimes->{3.727729540323201*^9,{3.7277335038162127`*^9,3.727733572830586*^9},3.727733661602697*^9,3.72773418437728*^9,3.72773429013249*^9,{3.7277355711464357`*^9,3.727735577873372*^9},3.728467557226215*^9,3.72846773799513*^9,3.728468057757498*^9,{3.728468111010084*^9,3.728468140638256*^9},3.728468183309657*^9,3.7284685418183517`*^9}]]

(*ClearAll[a,b,u,v, f]
MapThread[f,{{a,b,a,b}, {u,u,v,v}}]*)