In[135]:= $RecursionLimit = 9999; Clear[Drag]; Drag[t_, a1_: 1, a0_: 0] := Drag[t, b1_: 1, b0_: 0] = (Drag[t, s1_: 1, s0_: 0] = ((a0 - s0)/(s1 - a1)); Module[{t2 = 2*t, n}, n = Floor[t2]; t2 -= n; Switch[n, 0, (I + 1)/2*Drag[t2, a1*(I + 1)/2, a0], 1, 1 + (I - 1)/2*Drag[1 - t2, (I - 1)/2*a1, a1 + a0], 2, 1]]) E.g., In[136]:= Drag[7/22] Out[136]= 23/82 + 39 I/82 In[137]:= % - Drag[113/355] Out[137]= 517517964757026532787/96808512898827726880686 + 650828352727980554837 I/96808512898827726880686 In[138]:= N[%] Out[138]= 0.00534579 + 0.00672284 I (The Dragon function is continuous.) Dividing the domain [0,1] into equal fifths, ListLinePlot[ Partition[Table[{Re@#, Im@#} &@Drag[t/4/2048], {t, 8190}],1638], AspectRatio -> Automatic, Axes -> None] may surprise you: http://gosper.org/dragon5ths.png The obligatory continuous texture drift: ListLinePlot[Table[{Re@#, Im@#} &@Drag[t], {t, 0, 1, 1/513}], AspectRatio -> Automatic, Axes -> None] and ListLinePlot[Table[{Re@#, Im@#} &@Drag[t], {t, 1/1024, 1, 1/513}], AspectRatio -> Automatic, Axes -> None] http://gosper.org/driftdrags.png --rwg