FFTのソースを、JavaとC#で比較してみましたが、相違点は個々だけでした。
使っているライブラリの性能が違うのだろうか?

Java : System.arraycopy(data,0,copy,0,nd);
C# : Array.Copy(data, 0, copy, 0, nd);

java :
/** Make a random array of n (complex) elements. */
public static double[] makeRandom(int n){
int nd = 2*n;
double data[] = new double[nd];
for(int i=0; i<nd; i++)
data[i]= Math.random();
return data; }

C# :
/// <summary>
/// Make a random array of n (complex) elements.
/// </summary>
public static double[] makeRandom(int n)
{
int nd = 2 * n;
double[] data = new double[nd];
System.Random r = new System.Random();
for (int i = 0; i < nd; i++)
data[i] = r.NextDouble();
return data;
}