Fnord is mathematical visualization system. Basically it provides a purely-functional, collection-oriented language with symbolic differentiation and optimization. You can type in a parametric equation and see the resulting curve and/or surface. You can attach GUI widgets to parameters, and change their values in real time. etc.

Good News (November 2003): Brown University has changed the licence on fnord to GPL so it is finally truly open source. Thanks!

Fnord is joint work with nix and Matthew Stone.

Thomas Banchoff (who advised its creation) uses fnord to teach calculus, geometry, and topology (see his projects list)


for example, the following program creates a striped cyclide and displays it in a window. the rotation in the fourth dimension is connected to a slider.
circle := R -> (R, R)
       :  t -> (cos t, sin t) / sqrt(2);

I := Interval(-pi, pi, 31);
J := Dashes(-pi, pi, 31);

flatTorus := [ circle(I) >< circle(J) ];

project := R^4 -> R^3
        :  [x, y, z, w] -> [x, y, z] / (w - 1)
        ;

A := [[cos a, 0, 0, -sin a],
      [    0, 1, 0,      0],
      [    0, 0, 1,      0],
      [sin a, 0, 0,  cos a]]
  ;

rotate := R^4 -> R^4
       :  x   -> A x
       ;

a := widget Slider(0, pi/2), name<-"rotation around XW plane";

widget Show(project(rotate(flatTorus)));

higher-order differential forms can be defined and experimented with:
SecondFundamentalForm
   := Surfaces -> (R^2 -> R^2^2)
   :  X        -> (u   -> let n be SurfaceNormal(X)(u) in
		   [[X''(u)^1^1 . n, X''(u)^2^1 . n],
		    [X''(u)^1^2 . n, X''(u)^2^2 . n]])
   ;
spot at draves dot org