protected static void runSpecial(double minSeconds, String title, Double2DProcedure function) {
int[] sizes = {10000};
double[] densities = {0.00001};
boolean[] sparses = {true};
DoubleMatrix2D timings = DoubleFactory2D.dense.make(sizes.length,4);
cern.colt.Timer runTime = new cern.colt.Timer().start();
for (int i=0; i<sizes.length; i++) {
int size = sizes[i];
double density = densities[i];
boolean sparse = sparses[i];
final DoubleFactory2D factory = (sparse ? DoubleFactory2D.sparse : DoubleFactory2D.dense);
System.out.print("\n@");
System.out.print("x");
double val = 0.5;
function.A=null; function.B=null; function.C=null; function.D=null; // --> help gc before allocating new mem
DoubleMatrix2D A = factory.sample(size,size,val,density);
DoubleMatrix2D B = factory.sample(size,size,val,density);
function.setParameters(A,B);
A = null; B = null; // help gc
float secs = BenchmarkKernel.run(minSeconds,function);
double ops = function.operations();
float opsPerSec = (float) (ops / secs);