   return 22.*Q12-243.*S12;
 }
 
+float Roman(vec4 p) {
+  float r = 2.0;
+  float x = p.x, y = p.y, z = p.z;
+  float eps = 0.0; //1e-4; // Fudge factor!
+  // Use swizzle?
+  return x*x*y*y + y*y*z*z + z*z*x*x + r*r*x*y*z - eps;
+}
+
 vec4 ctransform(vec4 p, float offset) {
   float w = cos(offset)*p.w - sin(offset)*p.z;
   float z = sin(offset)*p.w + cos(offset)*p.z;

                 abs(0.5*sin(K*z/w)+0.5));
  }
  seed = 12345678;
  seed = mix(seed,befuddle(gridx));
  seed = mix(seed,befuddle(gridy));
  seed = mix(seed,befuddle(gridz));
  if (ctype == 6) {
    return vec3(frand(),frand(),frand());
  }

  float sink = sin(k);
  mat4 m = qmat(cosk,-sink,0.0,0.0);
  p = m*p;
  return p;
}

float Fun(vec4 p) {
#if defined BENCHMARK
  //return Barth10(p);
  return Labs(p);
#else
  p = transform(p);
  //return Borg(p);
  //return Sphere(p);
  if (stype == 0) return Labs(p);
  else if (stype == 1) return Barth(p);
