SetDirectory["/Users/jimswift/Dropbox/snow/mathematica/"]
SetDirectory["C:\\Users\\jws8\\Dropbox\\snow\\mathematica\\"]

this is the function of the form y = (m x + b) exp(ax) that goes through the three data points.  
Here xm = - xp, so it is easy to solve for m and a.   I actually solve for Exp[a xp], which I call eaxp.

xp = 1;
ym = -.1;
y0 = 1;
yp = .1;
m = Sqrt[y0^2 - yp ym]/xp;
eaxp = yp /(m xp + y0);
Plot[(m x + y0)eaxp^(x/xp), {x, -xp,xp}, PlotRange -> All,Prolog ->{Point[{{-xp, ym}, {0, y0}, {xp, yp}} ]}]

A quadratic fit does just as well, or better!

a = -1;
b = 0;
c = 1;
fa = .1;
fb = .2;
fc = -.1;
p[x_] := fa (((x - b)(x - c))/((a-b)(a- c)))+fb (((x-a)(x-xp))/((b - a)(b-xp)))+fc (((x - a)(x-b))/((c - a)(c-b)));
soln = Solve[p[x] == 0, x];
z = x/.soln[[1]];
If[z < Min[a,c] || z > Max[a,c],z = x/.soln[[2]] ];
Plot[p[x], {x, a, c}, PlotRange -> All,Prolog ->{Point[{{a, fa}, {b, fb}, {c, fc}, {z, 0}} ]}]

f[x_] := Exp[x] - 2;
a = -1;
c = 1;
b = (a+c)/2;
fa = f[a];
fb = f[b];
fc = f[c];
p[x_] := fa (((x - b)(x - c))/((a-b)(a- c)))+fb (((x-a)(x-xp))/((b - a)(b-xp)))+fc (((x - a)(x-b))/((c - a)(c-b)));
soln = Solve[p[x] == 0, x];
z = x/.soln[[1]];
If[z < Min[a,c] || z > Max[a,c],z = x/.soln[[2]] ];
Plot[{f[x],p[x]}, {x, a, c}, PlotRange -> All,Prolog ->{Point[{{a, fa}, {b, fb}, {c, fc}, {z, 0}} ]}]

Clear[ym, y0, yp, xm, x0, xp];
Simplify[Solve[ ym (((x - x0)(x - xp))/((xm-x0)(xm - xp)))+y0 (((x-xm)(x-xp))/((x0 - xm)(x0-xp)))+yp (((x - xm)(x-x0))/((xp - xm)(xp-x0))) == 0, x]]

Let's make a figure for Wikipedia.  Use their notation.

f[x_] := x^3- x^2  -x - 5;
x1 =-1;
x2 = 3;
x3 = (x1 + x2)/2;
d = x2-x3; (* follows Ridders' original paper *)
y1= f[x1];
y2 = f[x2];
y3 = f[x3];
m = Sign[y2-y1]((Sqrt[y3^2 - y1 y2])/d);
x4 = x3 - y3/m;
y4 = f[x4];
etoa = (((y2/(m  d + y3)))^(1/d));
g[x_] := (m (x-x3) + y3)etoa^(x-x3);
p1 = Plot[{f[x],g[x]}, {x, x1, x2}, PlotRange -> All,Epilog ->{PointSize[0.015],Point[{{x1, y1}, {x2, y2}, {x3, y3}, {x4, 0}, {x4, y4}} ]}];
Which[
y3*y4 < 0, x1 = x3; x2 = x4,
y1*y4 <0, x2 = x4,
y2*y4 < 0,  x1 = x4
];  (* now do the rest of the procedure.  This is sligtly wasteful becaue f is recalculated at one point *)
x3 = (x1 + x2)/2;
d = x2-x3; (* follows Ridders' original paper *)
y1= f[x1];
y2 = f[x2];
y3 = f[x3];
p2 = Show[p1,Graphics[{Green,Line[{{x1, y1}, {x1, y2}, {x2, y2}, {x2, y1}, {x1, y1}}]} ], p1];
m = Sign[y2-y1]((Sqrt[y3^2 - y1 y2])/d);
x4 = x3 - y3/m;
y4 = f[x4];
etoa = (((y2/(m  d + y3)))^(1/d));
g[x_] := (m (x-x3) + y3)etoa^(x-x3);
p3= Plot[{f[x],g[x]}, {x, x1, x2}, PlotRange -> All,Epilog ->{PointSize[0.015],Point[{{x1, y1}, {x2, y2}, {x3, y3}, {x4, 0}, {x4, y4}} ]}];
GraphicsColumn[{p1, p2, p3}];
ListAnimate[{p1,p2,p3}]

Export["Ridders1fig1.gif",Magnify[ p1,2], ImageSize -> 300]
Export["Ridders1fig2.gif",Magnify[ p2,2], ImageSize -> 300]
Export["Ridders1fig3.gif",Magnify[ p3,2], ImageSize -> 300]

Magnify[p1, 2]

f[x_] := x^3/3 + x^2  -x - 5;
x1 =-1;
x2 = 3;
x3 = (x1 + x2)/2;
d = x2-x3; (* follows Ridders' original paper *)
y1= f[x1];
y2 = f[x2];
y3 = f[x3];
m = Sign[y2-y1]((Sqrt[y3^2 - y1 y2])/d);
x4 = x3 - y3/m;
y4 = f[x4];
etoa = (((y2/(m  d + y3)))^(1/d));
g[x_] := (m (x-x3) + y3)etoa^(x-x3);
p1 = Plot[{f[x],g[x]}, {x, x1, x2}, PlotRange -> All,Epilog ->{PointSize[0.015],Point[{{x1, y1}, {x2, y2}, {x3, y3}, {x4, 0}, {x4, y4}} ]}];
Which[
y3*y4 < 0, x1 = x3; x2 = x4,
y1*y4 <0, x2 = x4,
y2*y4 < 0,  x1 = x4
];  (* now do the rest of the procedure.  This is sligtly wasteful becaue f is recalculated at one point *)
x3 = (x1 + x2)/2;
d = x2-x3; (* follows Ridders' original paper *)
y1= f[x1];
y2 = f[x2];
y3 = f[x3];
p2 = Show[p1,Graphics[{Green,Line[{{x1, y1}, {x1, y2}, {x2, y2}, {x2, y1}, {x1, y1}}]} ], p1];
m = Sign[y2-y1]((Sqrt[y3^2 - y1 y2])/d);
x4 = x3 - y3/m;
y4 = f[x4];
etoa = (((y2/(m  d + y3)))^(1/d));
g[x_] := (m (x-x3) + y3)etoa^(x-x3);
p3= Plot[{f[x],g[x]}, {x, x1, x2}, PlotRange -> All,Epilog ->{PointSize[0.015],Point[{{x1, y1}, {x2, y2}, {x3, y3}, {x4, 0}, {x4, y4}} ]}];
GraphicsColumn[{p1, p2, p3}];
ListAnimate[{p1,p2,p3}]

Export["Ridders2fig1.gif",Magnify[ p1,2], ImageSize -> 300]
Export["Ridders2fig2.gif",Magnify[ p2,2], ImageSize -> 300]
Export["Ridders2fig3.gif",Magnify[ p3,2], ImageSize -> 300]

f[x_] := x + 0.1 x^2-.1;
x1 =0;
x2 = 3;
x3 = (x1 + x2)/2;
d = x2-x3; (* follows Ridders' original paper *)
y1= f[x1];
y2 = f[x2];
y3 = f[x3];
m = Sign[y2-y1]((Sqrt[y3^2 - y1 y2])/d);
x4 = x3 - y3/m;
y4 = f[x4];
etoa = (((y2/(m  d + y3)))^(1/d));
g[x_] := (m (x-x3) + y3)etoa^(x-x3);
p1 = Plot[{f[x],g[x]}, {x, x1, x2}, PlotRange -> All,Prolog ->{Point[{{x1, y1}, {x2, y2}, {x3, y3}, {x4, 0}, {x4, y4}} ]}]
Which[
y3*y4 < 0, x1 = x3; x2 = x4,
y1*y4 <0, x2 = x4,
y2*y4 < 0,  x1 = x4
];  (* now do the rest of the procedure.  This is sligtly wasteful becaue f is recalculated at one point *)
x3 = (x1 + x2)/2;
d = x2-x3; (* follows Ridders' original paper *)
y1= f[x1];
y2 = f[x2];
y3 = f[x3];
m = Sign[y2-y1]((Sqrt[y3^2 - y1 y2])/d);
x4 = x3 - y3/m;
y4 = f[x4];
etoa = (((y2/(m  d + y3)))^(1/d));
g[x_] := (m (x-x3) + y3)etoa^(x-x3);
p2= Plot[{f[x],g[x]}, {x, x1, x2}, PlotRange -> All,Prolog ->{Point[{{x1, y1}, {x2, y2}, {x3, y3}, {x4, 0}, {x4, y4}} ]}]
GraphicsRow[{p1, p2}]