1parametric
2    size :: scale_picker = 1;
3in let
4log_spiral[s,g] = make_shape {
5    dist[x,y,z,t] =
6        let r = mag[x,y];
7            t = phase[x,y];
8        in if (r == 0)
9            0
10        else
11            let n = (log(r/s)/g - t) / tau;
12                upper_r = s * e^(g*(t+tau*ceil n));
13                lower_r = s * e^(g*(t+tau*floor n));
14            in (min[abs(upper_r-r), abs(r-lower_r)] - r*abs g)
15                / 1.24; /* empirical Lipschitz compensation factor for g=.2 */
16    is_2d = true;
17};
18in
19log_spiral[1,0.2]
20>> scale size
21