chrislo-sourceclassifier 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +325 -0
- data/README.textile +51 -0
- data/Rakefile +64 -0
- data/examples/example.rb +22 -0
- data/lib/sourceclassifier.rb +22 -0
- data/lib/trainer.rb +51 -0
- data/sourceclassifier.gemspec +35 -0
- data/sources/gcc/ackermann.gcc-2.gcc +93 -0
- data/sources/gcc/ackermann.gcc-3.gcc +20 -0
- data/sources/gcc/ary.gcc +40 -0
- data/sources/gcc/binarytrees.gcc +136 -0
- data/sources/gcc/binarytrees.gcc-2.gcc +140 -0
- data/sources/gcc/binarytrees.gcc-3.gcc +134 -0
- data/sources/gcc/chameneos.gcc +117 -0
- data/sources/gcc/chameneos.gcc-2.gcc +134 -0
- data/sources/gcc/chameneos.gcc-3.gcc +120 -0
- data/sources/gcc/chameneosredux.gcc +306 -0
- data/sources/gcc/echo.gcc +144 -0
- data/sources/gcc/except.gcc +52 -0
- data/sources/gcc/fannkuch.gcc +105 -0
- data/sources/gcc/fannkuch.gcc-2.gcc +94 -0
- data/sources/gcc/fasta.gcc +158 -0
- data/sources/gcc/fasta.gcc-2.gcc +132 -0
- data/sources/gcc/fasta.gcc-3.gcc +145 -0
- data/sources/gcc/fasta.gcc-4.gcc +141 -0
- data/sources/gcc/fibo.gcc +20 -0
- data/sources/gcc/harmonic.gcc +22 -0
- data/sources/gcc/hash.gcc +31 -0
- data/sources/gcc/hash2.gcc +38 -0
- data/sources/gcc/heapsort.gcc +72 -0
- data/sources/gcc/hello.gcc-2.gcc +12 -0
- data/sources/gcc/hello.gcc-3.gcc +20 -0
- data/sources/gcc/knucleotide.gcc +173 -0
- data/sources/gcc/knucleotide.gcc-2.gcc +168 -0
- data/sources/gcc/lists.gcc +226 -0
- data/sources/gcc/magicsquares.gcc +378 -0
- data/sources/gcc/mandelbrot.gcc +84 -0
- data/sources/gcc/mandelbrot.gcc-2.gcc +63 -0
- data/sources/gcc/mandelbrot.gcc-3.gcc +91 -0
- data/sources/gcc/mandelbrot.gcc-4.gcc +78 -0
- data/sources/gcc/matrix.gcc +66 -0
- data/sources/gcc/message.gcc-2.gcc +72 -0
- data/sources/gcc/message.gcc-3.gcc +64 -0
- data/sources/gcc/methcall.gcc +89 -0
- data/sources/gcc/moments.gcc +120 -0
- data/sources/gcc/nbody.gcc +142 -0
- data/sources/gcc/nbody.gcc-2.gcc +143 -0
- data/sources/gcc/nbody.gcc-3.gcc +142 -0
- data/sources/gcc/nestedloop.gcc +25 -0
- data/sources/gcc/nsieve.gcc +35 -0
- data/sources/gcc/nsievebits.gcc-2.gcc +37 -0
- data/sources/gcc/nsievebits.gcc-3.gcc +53 -0
- data/sources/gcc/objinst.gcc +95 -0
- data/sources/gcc/partialsums.gcc +86 -0
- data/sources/gcc/partialsums.gcc-3.gcc +81 -0
- data/sources/gcc/partialsums.gcc-4.gcc +68 -0
- data/sources/gcc/pidigits.gcc +105 -0
- data/sources/gcc/primes.gcc +75 -0
- data/sources/gcc/prodcons.gcc +86 -0
- data/sources/gcc/random.gcc +29 -0
- data/sources/gcc/raytracer.gcc +125 -0
- data/sources/gcc/raytracer.gcc-2.gcc +181 -0
- data/sources/gcc/recursive.gcc +68 -0
- data/sources/gcc/recursive.gcc-2.gcc +55 -0
- data/sources/gcc/regexdna.gcc-2.gcc +126 -0
- data/sources/gcc/regexmatch.gcc +136 -0
- data/sources/gcc/revcomp.gcc +85 -0
- data/sources/gcc/revcomp.gcc-2.gcc +88 -0
- data/sources/gcc/revcomp.gcc-4.gcc +71 -0
- data/sources/gcc/reversefile.gcc +103 -0
- data/sources/gcc/reversefile.gcc-2.gcc +56 -0
- data/sources/gcc/sieve.gcc +34 -0
- data/sources/gcc/spectralnorm.gcc +54 -0
- data/sources/gcc/spellcheck.gcc +72 -0
- data/sources/gcc/spellcheck.gcc-2.gcc +61 -0
- data/sources/gcc/strcat.gcc +38 -0
- data/sources/gcc/sumcol.gcc-2.gcc +98 -0
- data/sources/gcc/sumcol.gcc-3.gcc +22 -0
- data/sources/gcc/sumcol.gcc-4.gcc +18 -0
- data/sources/gcc/sumcol.gcc-5.gcc +32 -0
- data/sources/gcc/takfp.gcc +23 -0
- data/sources/gcc/tcp-stream.gcc +122 -0
- data/sources/gcc/tcpecho.gcc +122 -0
- data/sources/gcc/tcpecho.gcc-2.gcc +136 -0
- data/sources/gcc/tcprequest.gcc +122 -0
- data/sources/gcc/threadring.gcc +73 -0
- data/sources/gcc/wc.gcc +52 -0
- data/sources/gcc/wc.gcc-2.gcc +40 -0
- data/sources/gcc/wc.gcc-3.gcc +46 -0
- data/sources/gcc/wordfreq.gcc-2.gcc +85 -0
- data/sources/perl/ackermann.perl +28 -0
- data/sources/perl/ackermann.perl-2.perl +25 -0
- data/sources/perl/ackermann.perl-3.perl +20 -0
- data/sources/perl/ackermann.perl-4.perl +18 -0
- data/sources/perl/ary.perl +25 -0
- data/sources/perl/ary.perl-2.perl +23 -0
- data/sources/perl/binarytrees.perl +66 -0
- data/sources/perl/binarytrees.perl-2.perl +71 -0
- data/sources/perl/chameneos.perl +67 -0
- data/sources/perl/echo.perl +81 -0
- data/sources/perl/except.perl +73 -0
- data/sources/perl/fannkuch.perl +44 -0
- data/sources/perl/fannkuch.perl-2.perl +38 -0
- data/sources/perl/fasta.perl +112 -0
- data/sources/perl/fasta.perl-2.perl +135 -0
- data/sources/perl/fasta.perl-4.perl +122 -0
- data/sources/perl/fibo.perl +15 -0
- data/sources/perl/fibo.perl-2.perl +0 -0
- data/sources/perl/fibo.perl-3.perl +0 -0
- data/sources/perl/harmonic.perl +7 -0
- data/sources/perl/hash.perl +23 -0
- data/sources/perl/hash.perl-2.perl +17 -0
- data/sources/perl/hash.perl-3.perl +24 -0
- data/sources/perl/hash2.perl +16 -0
- data/sources/perl/heapsort.perl +65 -0
- data/sources/perl/heapsort.perl-2.perl +0 -0
- data/sources/perl/hello.perl +5 -0
- data/sources/perl/knucleotide.perl-2.perl +30 -0
- data/sources/perl/lists.perl +48 -0
- data/sources/perl/mandelbrot.perl-2.perl +32 -0
- data/sources/perl/matrix.perl +59 -0
- data/sources/perl/matrix.perl-2.perl +0 -0
- data/sources/perl/matrix.perl-3.perl +0 -0
- data/sources/perl/message.perl +27 -0
- data/sources/perl/methcall.perl +66 -0
- data/sources/perl/moments.perl +44 -0
- data/sources/perl/nbody.perl +108 -0
- data/sources/perl/nestedloop.perl +28 -0
- data/sources/perl/nsieve.perl-2.perl +41 -0
- data/sources/perl/nsieve.perl-4.perl +43 -0
- data/sources/perl/nsievebits.perl +37 -0
- data/sources/perl/objinst.perl +73 -0
- data/sources/perl/partialsums.perl-3.perl +31 -0
- data/sources/perl/pidigits.perl +52 -0
- data/sources/perl/pidigits.perl-2.perl +47 -0
- data/sources/perl/process.perl +50 -0
- data/sources/perl/prodcons.perl +47 -0
- data/sources/perl/random.perl-4.perl +17 -0
- data/sources/perl/recursive.perl-2.perl +57 -0
- data/sources/perl/regexdna.perl +48 -0
- data/sources/perl/regexdna.perl-2.perl +43 -0
- data/sources/perl/regexdna.perl-3.perl +50 -0
- data/sources/perl/regexdna.perl-4.perl +49 -0
- data/sources/perl/regexdna.perl-5.perl +42 -0
- data/sources/perl/regexdna.perl-6.perl +43 -0
- data/sources/perl/regexmatch.perl +35 -0
- data/sources/perl/revcomp.perl-2.perl +34 -0
- data/sources/perl/reversefile.perl +8 -0
- data/sources/perl/reversefile.perl-2.perl +0 -0
- data/sources/perl/reversefile.perl-3.perl +0 -0
- data/sources/perl/sieve.perl +23 -0
- data/sources/perl/spectralnorm.perl-2.perl +54 -0
- data/sources/perl/spellcheck.perl +24 -0
- data/sources/perl/strcat.perl +13 -0
- data/sources/perl/strcat.perl-2.perl +0 -0
- data/sources/perl/sumcol.perl +8 -0
- data/sources/perl/takfp.perl +23 -0
- data/sources/perl/takfp.perl-3.perl +20 -0
- data/sources/perl/tcpecho.perl +61 -0
- data/sources/perl/tcprequest.perl +61 -0
- data/sources/perl/tcpstream.perl +61 -0
- data/sources/perl/threadring.perl +55 -0
- data/sources/perl/threadring.perl-2.perl +43 -0
- data/sources/perl/wc.perl +20 -0
- data/sources/perl/wc.perl-2.perl +14 -0
- data/sources/perl/wordfreq.perl +22 -0
- data/sources/perl/wordfreq.perl-3.perl +0 -0
- data/sources/perl/wordfreq.perl3.perl +0 -0
- data/sources/python/ackermann.python +21 -0
- data/sources/python/ary.python +19 -0
- data/sources/python/binarytrees.python +39 -0
- data/sources/python/binarytrees.python-3.python +44 -0
- data/sources/python/chameneos.python-6.python +73 -0
- data/sources/python/chameneosredux.python +126 -0
- data/sources/python/chameneosredux.python-2.python +122 -0
- data/sources/python/dispatch.python +176 -0
- data/sources/python/dispatch.python-2.python +136 -0
- data/sources/python/echo.python +64 -0
- data/sources/python/except.python +62 -0
- data/sources/python/fannkuch.python +50 -0
- data/sources/python/fannkuch.python-2.python +54 -0
- data/sources/python/fasta.python-2.python +79 -0
- data/sources/python/fibo.python +17 -0
- data/sources/python/fibo.python-2.python +0 -0
- data/sources/python/fibo.python-3.python +0 -0
- data/sources/python/harmonic.python-2.python +9 -0
- data/sources/python/hash.python +21 -0
- data/sources/python/hash.python-2.python +0 -0
- data/sources/python/hash2.python +30 -0
- data/sources/python/heapsort.python-3.python +66 -0
- data/sources/python/hello.python +5 -0
- data/sources/python/implicitode.python +231 -0
- data/sources/python/knucleotide.python +55 -0
- data/sources/python/lists.python +44 -0
- data/sources/python/magicsquares.python +145 -0
- data/sources/python/mandelbrot.python +44 -0
- data/sources/python/mandelbrot.python-2.python +35 -0
- data/sources/python/mandelbrot.python-3.python +46 -0
- data/sources/python/matrix.python +34 -0
- data/sources/python/matrix.python-2.python +23 -0
- data/sources/python/message.python +24 -0
- data/sources/python/message.python-2.python +20 -0
- data/sources/python/message.python-3.python +19 -0
- data/sources/python/meteor.python +210 -0
- data/sources/python/meteor.python-2.python +192 -0
- data/sources/python/methcall.python +51 -0
- data/sources/python/moments.python +65 -0
- data/sources/python/nbody.python +123 -0
- data/sources/python/nbody.python-2.python +120 -0
- data/sources/python/nestedloop.python +24 -0
- data/sources/python/nsieve.python +27 -0
- data/sources/python/nsieve.python-2.python +23 -0
- data/sources/python/nsieve.python-4.python +25 -0
- data/sources/python/nsievebits.python +27 -0
- data/sources/python/nsievebits.python-2.python +43 -0
- data/sources/python/objinst.python +53 -0
- data/sources/python/partialsums.python +37 -0
- data/sources/python/partialsums.python-2.python +35 -0
- data/sources/python/partialsums.python-3.python +48 -0
- data/sources/python/pidigits.python +38 -0
- data/sources/python/pidigits.python-3.python +63 -0
- data/sources/python/pidigits.python-4.python +24 -0
- data/sources/python/process.python +51 -0
- data/sources/python/process.python-2.python +133 -0
- data/sources/python/prodcons.python +51 -0
- data/sources/python/prodcons.python-2.python +0 -0
- data/sources/python/random.python +27 -0
- data/sources/python/raytracer.python +203 -0
- data/sources/python/recursive.python +35 -0
- data/sources/python/regexdna.python +39 -0
- data/sources/python/regexdna.python-2.python +34 -0
- data/sources/python/regexmatch.python +36 -0
- data/sources/python/revcomp.python-3.python +31 -0
- data/sources/python/reversefile.python +13 -0
- data/sources/python/reversefile.python-2.python +0 -0
- data/sources/python/reversefile.python-3.python +0 -0
- data/sources/python/sieve.python +50 -0
- data/sources/python/spectralnorm.python-2.python +36 -0
- data/sources/python/spellcheck.python +17 -0
- data/sources/python/strcat.python +35 -0
- data/sources/python/strcat.python-2.python +0 -0
- data/sources/python/sumcol.python-2.python +0 -0
- data/sources/python/sumcol.python-3.python +0 -0
- data/sources/python/takfp.python +19 -0
- data/sources/python/tcpecho.python +67 -0
- data/sources/python/tcprequest.python +67 -0
- data/sources/python/tcpstream.python +67 -0
- data/sources/python/threadring.python +47 -0
- data/sources/python/threadring.python-2.python +40 -0
- data/sources/python/threadring.python-3.python +34 -0
- data/sources/python/wc.python-2.python +19 -0
- data/sources/python/wordfreq.python +43 -0
- data/sources/python/wordfreq.python-2.python +0 -0
- data/sources/python/wordfreq.python-3.python +28 -0
- data/sources/python/wordfreq.python-4.python +38 -0
- data/sources/python/wordfreq.python-5.python +39 -0
- data/sources/ruby/ackermann.ruby +17 -0
- data/sources/ruby/ackermann.ruby-5.ruby +153 -0
- data/sources/ruby/ary.ruby +22 -0
- data/sources/ruby/binarytrees.ruby-2.ruby +55 -0
- data/sources/ruby/chameneos.ruby-2.ruby +71 -0
- data/sources/ruby/dispatch.ruby +114 -0
- data/sources/ruby/echo.ruby +41 -0
- data/sources/ruby/except.ruby +61 -0
- data/sources/ruby/except.ruby-2.ruby +61 -0
- data/sources/ruby/fannkuch.ruby +42 -0
- data/sources/ruby/fasta.ruby +81 -0
- data/sources/ruby/fibo.ruby +15 -0
- data/sources/ruby/harmonic.ruby-2.ruby +15 -0
- data/sources/ruby/hash.ruby +19 -0
- data/sources/ruby/hash2.ruby +23 -0
- data/sources/ruby/heapsort.ruby +55 -0
- data/sources/ruby/hello.ruby +6 -0
- data/sources/ruby/knucleotide.ruby-2.ruby +44 -0
- data/sources/ruby/lists.ruby +46 -0
- data/sources/ruby/mandelbrot.ruby-3.ruby +63 -0
- data/sources/ruby/matrix.ruby +40 -0
- data/sources/ruby/matrix.ruby-2.ruby +30 -0
- data/sources/ruby/message.ruby +29 -0
- data/sources/ruby/message.ruby-2.ruby +24 -0
- data/sources/ruby/meteor.ruby +386 -0
- data/sources/ruby/meteor.ruby-2.ruby +561 -0
- data/sources/ruby/methcall.ruby +58 -0
- data/sources/ruby/methcall.ruby-2.ruby +54 -0
- data/sources/ruby/moments.ruby +64 -0
- data/sources/ruby/nbody.ruby-2.ruby +145 -0
- data/sources/ruby/nestedloop.ruby +22 -0
- data/sources/ruby/nsieve.ruby +36 -0
- data/sources/ruby/nsieve.ruby-2.ruby +25 -0
- data/sources/ruby/nsievebits.ruby-2.ruby +42 -0
- data/sources/ruby/objinst.ruby +58 -0
- data/sources/ruby/partialsums.ruby +39 -0
- data/sources/ruby/pidigits.ruby +92 -0
- data/sources/ruby/pidigits.ruby-2.ruby +109 -0
- data/sources/ruby/prodcons.ruby +41 -0
- data/sources/ruby/random.ruby +17 -0
- data/sources/ruby/recursive.ruby-2.ruby +53 -0
- data/sources/ruby/regexdna.ruby +32 -0
- data/sources/ruby/regexdna.ruby-2.ruby +38 -0
- data/sources/ruby/regexmatch.ruby +33 -0
- data/sources/ruby/revcomp.ruby +28 -0
- data/sources/ruby/reversefile.ruby +7 -0
- data/sources/ruby/sieve.ruby +30 -0
- data/sources/ruby/spectralnorm.ruby +48 -0
- data/sources/ruby/spellcheck.ruby +18 -0
- data/sources/ruby/spellcheck.ruby-2.ruby +0 -0
- data/sources/ruby/strcat.ruby +12 -0
- data/sources/ruby/strcat.ruby-2.ruby +12 -0
- data/sources/ruby/sumcol.ruby +12 -0
- data/sources/ruby/sumcol.ruby-2.ruby +5 -0
- data/sources/ruby/takfp.ruby +15 -0
- data/sources/ruby/tcpecho.ruby +45 -0
- data/sources/ruby/tcprequest.ruby +45 -0
- data/sources/ruby/tcpstream.ruby +45 -0
- data/sources/ruby/threadring.ruby +61 -0
- data/sources/ruby/threadring.ruby-2.ruby +33 -0
- data/sources/ruby/wc.ruby +15 -0
- data/sources/ruby/wordfreq.ruby +17 -0
- data/sources/ruby/wordfreq.ruby2.ruby +0 -0
- data/test/fixtures/sources/gcc/ackermann.gcc-2.gcc +93 -0
- data/test/fixtures/sources/python/ackermann.python +21 -0
- data/test/fixtures/sources/ruby/ackermann.ruby +17 -0
- data/test/test_source_classifier.rb +40 -0
- data/test/test_trainer.rb +34 -0
- data/trainer.bin +1193 -0
- metadata +393 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
# $Id: moments.perl,v 1.1.1.1 2004-05-19 18:10:48 bfulgham Exp $
|
3
|
+
# http://www.bagley.org/~doug/shootout/
|
4
|
+
|
5
|
+
use strict;
|
6
|
+
|
7
|
+
my @nums = <STDIN>;
|
8
|
+
my $sum = 0;
|
9
|
+
foreach (@nums) { $sum += $_ }
|
10
|
+
my $n = scalar(@nums);
|
11
|
+
my $mean = $sum/$n;
|
12
|
+
my $average_deviation = 0;
|
13
|
+
my $standard_deviation = 0;
|
14
|
+
my $variance = 0;
|
15
|
+
my $skew = 0;
|
16
|
+
my $kurtosis = 0;
|
17
|
+
foreach (@nums) {
|
18
|
+
my $deviation = $_ - $mean;
|
19
|
+
$average_deviation += abs($deviation);
|
20
|
+
$variance += $deviation**2;
|
21
|
+
$skew += $deviation**3;
|
22
|
+
$kurtosis += $deviation**4;
|
23
|
+
}
|
24
|
+
$average_deviation /= $n;
|
25
|
+
$variance /= ($n - 1);
|
26
|
+
$standard_deviation = sqrt($variance);
|
27
|
+
|
28
|
+
if ($variance) {
|
29
|
+
$skew /= ($n * $variance * $standard_deviation);
|
30
|
+
$kurtosis = $kurtosis/($n * $variance * $variance) - 3.0;
|
31
|
+
}
|
32
|
+
|
33
|
+
@nums = sort { $a <=> $b } @nums;
|
34
|
+
my $mid = int($n/2);
|
35
|
+
my $median = ($n % 2) ? $nums[$mid] : ($nums[$mid] + $nums[$mid-1])/2;
|
36
|
+
|
37
|
+
printf("n: %d\n", $n);
|
38
|
+
printf("median: %f\n", $median);
|
39
|
+
printf("mean: %f\n", $mean);
|
40
|
+
printf("average_deviation: %f\n", $average_deviation);
|
41
|
+
printf("standard_deviation: %f\n", $standard_deviation);
|
42
|
+
printf("variance: %f\n", $variance);
|
43
|
+
printf("skew: %f\n", $skew);
|
44
|
+
printf("kurtosis: %f\n", $kurtosis);
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# The Computer Language Shootout
|
2
|
+
# http://shootout.alioth.debian.org/
|
3
|
+
#
|
4
|
+
# contributed by Christoph Bauer
|
5
|
+
# converted into Perl by Márton Papp
|
6
|
+
# fixed and cleaned up by Danny Sauer
|
7
|
+
# optimized by Jesse Millikan
|
8
|
+
|
9
|
+
use constant PI => 3.141592653589793;
|
10
|
+
use constant SOLAR_MASS => (4 * PI * PI);
|
11
|
+
use constant DAYS_PER_YEAR => 365.24;
|
12
|
+
|
13
|
+
# Globals for arrays... Oh well.
|
14
|
+
# Almost every iteration is a range, so I keep the last index rather than a count.
|
15
|
+
my (@xs, @ys, @zs, @vxs, @vys, @vzs, @mass, $last);
|
16
|
+
|
17
|
+
sub advance($)
|
18
|
+
{
|
19
|
+
my ($dt) = @_;
|
20
|
+
my ($mm, $mm2, $j, $dx, $dy, $dz, $distance, $mag);
|
21
|
+
|
22
|
+
# This is faster in the outer loop...
|
23
|
+
for (0..$last) {
|
24
|
+
# But not in the inner loop. Strange.
|
25
|
+
for ($j = $_ + 1; $j < $last + 1; $j++) {
|
26
|
+
$dx = $xs[$_] - $xs[$j];
|
27
|
+
$dy = $ys[$_] - $ys[$j];
|
28
|
+
$dz = $zs[$_] - $zs[$j];
|
29
|
+
$distance = sqrt($dx * $dx + $dy * $dy + $dz * $dz);
|
30
|
+
$mag = $dt / ($distance * $distance * $distance);
|
31
|
+
$mm = $mass[$_] * $mag;
|
32
|
+
$mm2 = $mass[$j] * $mag;
|
33
|
+
$vxs[$_] -= $dx * $mm2;
|
34
|
+
$vxs[$j] += $dx * $mm;
|
35
|
+
$vys[$_] -= $dy * $mm2;
|
36
|
+
$vys[$j] += $dy * $mm;
|
37
|
+
$vzs[$_] -= $dz * $mm2;
|
38
|
+
$vzs[$j] += $dz * $mm;
|
39
|
+
}
|
40
|
+
|
41
|
+
# We're done with planet $_ at this point
|
42
|
+
# This could be done in a seperate loop, but it's slower
|
43
|
+
$xs[$_] += $dt * $vxs[$_];
|
44
|
+
$ys[$_] += $dt * $vys[$_];
|
45
|
+
$zs[$_] += $dt * $vzs[$_];
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
sub energy
|
50
|
+
{
|
51
|
+
my ($e, $i, $dx, $dy, $dz, $distance);
|
52
|
+
|
53
|
+
$e = 0.0;
|
54
|
+
for $i (0..$last) {
|
55
|
+
$e += 0.5 * $mass[$i] *
|
56
|
+
($vxs[$i] * $vxs[$i] + $vys[$i] * $vys[$i] + $vzs[$i] * $vzs[$i]);
|
57
|
+
for ($i + 1..$last) {
|
58
|
+
$dx = $xs[$i] - $xs[$_];
|
59
|
+
$dy = $ys[$i] - $ys[$_];
|
60
|
+
$dz = $zs[$i] - $zs[$_];
|
61
|
+
$distance = sqrt($dx * $dx + $dy * $dy + $dz * $dz);
|
62
|
+
$e -= ($mass[$i] * $mass[$_]) / $distance;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
return $e;
|
66
|
+
}
|
67
|
+
|
68
|
+
sub offset_momentum
|
69
|
+
{
|
70
|
+
my ($px, $py, $pz) = (0.0, 0.0, 0.0);
|
71
|
+
|
72
|
+
for (0..$last) {
|
73
|
+
$px += $vxs[$_] * $mass[$_];
|
74
|
+
$py += $vys[$_] * $mass[$_];
|
75
|
+
$pz += $vzs[$_] * $mass[$_];
|
76
|
+
}
|
77
|
+
$vxs[0] = - $px / SOLAR_MASS;
|
78
|
+
$vys[0] = - $py / SOLAR_MASS;
|
79
|
+
$vzs[0] = - $pz / SOLAR_MASS;
|
80
|
+
}
|
81
|
+
|
82
|
+
# @ns = ( sun, jupiter, saturn, uranus, neptune )
|
83
|
+
@xs = (0, 4.84143144246472090e+00, 8.34336671824457987e+00, 1.28943695621391310e+01, 1.53796971148509165e+01);
|
84
|
+
@ys = (0, -1.16032004402742839e+00, 4.12479856412430479e+00, -1.51111514016986312e+01, -2.59193146099879641e+01);
|
85
|
+
@zs = (0, -1.03622044471123109e-01, -4.03523417114321381e-01, -2.23307578892655734e-01, 1.79258772950371181e-01);
|
86
|
+
@vxs = map {$_ * DAYS_PER_YEAR}
|
87
|
+
(0, 1.66007664274403694e-03, -2.76742510726862411e-03, 2.96460137564761618e-03, 2.68067772490389322e-03);
|
88
|
+
@vys = map {$_ * DAYS_PER_YEAR}
|
89
|
+
(0, 7.69901118419740425e-03, 4.99852801234917238e-03, 2.37847173959480950e-03, 1.62824170038242295e-03);
|
90
|
+
@vzs = map {$_ * DAYS_PER_YEAR}
|
91
|
+
(0, -6.90460016972063023e-05, 2.30417297573763929e-05, -2.96589568540237556e-05, -9.51592254519715870e-05);
|
92
|
+
@mass = map {$_ * SOLAR_MASS}
|
93
|
+
(1, 9.54791938424326609e-04, 2.85885980666130812e-04, 4.36624404335156298e-05, 5.15138902046611451e-05);
|
94
|
+
|
95
|
+
$last = @xs - 1;
|
96
|
+
|
97
|
+
offset_momentum();
|
98
|
+
printf ("%.9f\n", energy());
|
99
|
+
|
100
|
+
my $n = $ARGV[0];
|
101
|
+
|
102
|
+
# This does not, in fact, consume N*4 bytes of memory
|
103
|
+
for (1..$n){
|
104
|
+
advance(0.01);
|
105
|
+
}
|
106
|
+
|
107
|
+
printf ("%.9f\n", energy());
|
108
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
# $Id: nestedloop.perl,v 1.1.1.1 2004-05-19 18:10:57 bfulgham Exp $
|
3
|
+
# http://www.bagley.org/~doug/shootout/
|
4
|
+
|
5
|
+
use strict;
|
6
|
+
|
7
|
+
my $n = ($ARGV[0] > 0) ? $ARGV[0] : 1;
|
8
|
+
my $x = 0;
|
9
|
+
my $a = $n;
|
10
|
+
while ($a--) {
|
11
|
+
my $b = $n;
|
12
|
+
while ($b--) {
|
13
|
+
my $c = $n;
|
14
|
+
while ($c--) {
|
15
|
+
my $d = $n;
|
16
|
+
while ($d--) {
|
17
|
+
my $e = $n;
|
18
|
+
while ($e--) {
|
19
|
+
my $f = $n;
|
20
|
+
while ($f--) {
|
21
|
+
$x++;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
print "$x\n";
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# The Computer Language Benchmarks Game
|
2
|
+
# http://shootout.alioth.debian.org/
|
3
|
+
#
|
4
|
+
# contributed by David Pyke, March 2005
|
5
|
+
# optimized by Steffen Mueller, Sept 2007
|
6
|
+
|
7
|
+
use integer;
|
8
|
+
use strict;
|
9
|
+
|
10
|
+
sub nsieve {
|
11
|
+
my ($m) = @_;
|
12
|
+
my @a = (1) x $m;
|
13
|
+
|
14
|
+
my $count = 0;
|
15
|
+
foreach my $i (2..$m-1) {
|
16
|
+
if ($a[$i]) {
|
17
|
+
for (my $j = $i + $i; $j < $m; $j += $i){
|
18
|
+
$a[$j] = 0;
|
19
|
+
}
|
20
|
+
++$count;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
return $count;
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
sub nsieve_test {
|
28
|
+
my($n) = @_;
|
29
|
+
|
30
|
+
my $m = (1<<$n) * 10000;
|
31
|
+
my $ncount= nsieve($m);
|
32
|
+
printf "Primes up to %8u %8u\n", $m, $ncount;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
my $N = ($ARGV[0] < 1) ? 1 : $ARGV[0];
|
37
|
+
nsieve_test($N);
|
38
|
+
nsieve_test($N-1) if $N >= 1;
|
39
|
+
nsieve_test($N-2) if $N >= 2;
|
40
|
+
|
41
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# The Computer Language Benchmarks Game
|
2
|
+
# http://shootout.alioth.debian.org/
|
3
|
+
#
|
4
|
+
# contributed by David Pyke, March 2005
|
5
|
+
# optimized by Steffen Mueller, Sept 2007
|
6
|
+
# optimized by Laimonas Vėbra, Nov 2007
|
7
|
+
|
8
|
+
use integer;
|
9
|
+
use strict;
|
10
|
+
|
11
|
+
|
12
|
+
sub nsieve {
|
13
|
+
my ($m) = @_;
|
14
|
+
my $i, my $j, my $a;
|
15
|
+
my $count = 0;
|
16
|
+
|
17
|
+
$a = 0 x $m;
|
18
|
+
|
19
|
+
for($i = 2; $i < $m; $i++) {
|
20
|
+
if (substr($a, $i, 1) ne '1') {
|
21
|
+
for ($j = $i + $i; $j < $m; $j += $i){
|
22
|
+
substr($a, $j, 1) = '1';
|
23
|
+
}
|
24
|
+
++$count;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
return $count;
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
sub nsieve_test {
|
32
|
+
my($n) = @_;
|
33
|
+
|
34
|
+
my $m = (1<<$n) * 10000;
|
35
|
+
my $ncount= nsieve($m);
|
36
|
+
printf "Primes up to %8u %8u\n", $m, $ncount;
|
37
|
+
}
|
38
|
+
|
39
|
+
my $N = ($ARGV[0] < 1) ? 1 : $ARGV[0];
|
40
|
+
|
41
|
+
nsieve_test($N);
|
42
|
+
nsieve_test($N-1) if $N >= 1;
|
43
|
+
nsieve_test($N-2) if $N >= 2;
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
|
3
|
+
# The Great Computer Language Shootout
|
4
|
+
# http://shootout.alioth.debian.org/
|
5
|
+
# nsieve-bits benchmark
|
6
|
+
# contributed by Joel Hoffman, 2005-03-28
|
7
|
+
|
8
|
+
use strict;
|
9
|
+
|
10
|
+
sub nsieve {
|
11
|
+
my $mx = shift;
|
12
|
+
vec(my $vec,$mx,1)=0;
|
13
|
+
my $count=0;
|
14
|
+
for my $idx (2..$mx) {
|
15
|
+
unless (vec($vec,$idx,1)) {
|
16
|
+
$count++;
|
17
|
+
for (my $i=2 * $idx; $i<=$mx; $i+=$idx) {
|
18
|
+
vec($vec,$i,1)=1;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
$count;
|
23
|
+
}
|
24
|
+
|
25
|
+
sub test {
|
26
|
+
my $n = shift;
|
27
|
+
my $mx = 10000 * (2**$n);
|
28
|
+
printf "Primes up to %8d %8d\n",$mx,nsieve($mx);
|
29
|
+
}
|
30
|
+
|
31
|
+
for (0,1,2) {
|
32
|
+
if ($ARGV[0] > $_) {
|
33
|
+
test($ARGV[0] - $_)
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
# $Id: objinst.perl,v 1.1.1.1 2004-05-19 18:11:03 bfulgham Exp $
|
3
|
+
# http://www.bagley.org/~doug/shootout/
|
4
|
+
|
5
|
+
use strict;
|
6
|
+
|
7
|
+
|
8
|
+
package Toggle;
|
9
|
+
|
10
|
+
sub new {
|
11
|
+
my($class, $start_state) = @_;
|
12
|
+
bless( { Bool => $start_state }, $class );
|
13
|
+
}
|
14
|
+
|
15
|
+
sub value {
|
16
|
+
my $self = shift;
|
17
|
+
return($self->{Bool});
|
18
|
+
}
|
19
|
+
|
20
|
+
sub activate {
|
21
|
+
my $self = shift;
|
22
|
+
$self->{Bool} ^= 1;
|
23
|
+
return($self);
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
package NthToggle;
|
28
|
+
@NthToggle::ISA = qw(Toggle);
|
29
|
+
|
30
|
+
sub new {
|
31
|
+
my($class, $start_state, $max_counter) = @_;
|
32
|
+
my $self = $class->SUPER::new($start_state);
|
33
|
+
$self->{CountMax} = $max_counter;
|
34
|
+
$self->{Counter} = 0;
|
35
|
+
return($self);
|
36
|
+
}
|
37
|
+
|
38
|
+
sub activate {
|
39
|
+
my $self = shift;
|
40
|
+
if (++$self->{Counter} >= $self->{CountMax}) {
|
41
|
+
$self->{Bool} ^= 1;
|
42
|
+
$self->{Counter} = 0;
|
43
|
+
}
|
44
|
+
return($self);
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
package main;
|
49
|
+
|
50
|
+
sub main {
|
51
|
+
my $NUM = ($ARGV[0] > 0) ? $ARGV[0] : 1;
|
52
|
+
|
53
|
+
my $toggle = Toggle->new(1);
|
54
|
+
for (1..5) {
|
55
|
+
print (($toggle->activate->value) ? "true\n" : "false\n");
|
56
|
+
}
|
57
|
+
for (1..$NUM) {
|
58
|
+
$toggle = Toggle->new(1);
|
59
|
+
}
|
60
|
+
|
61
|
+
print "\n";
|
62
|
+
|
63
|
+
my $ntoggle = NthToggle->new(1, 3);
|
64
|
+
for (1..8) {
|
65
|
+
print (($ntoggle->activate->value) ? "true\n" : "false\n");
|
66
|
+
}
|
67
|
+
for (1..$NUM) {
|
68
|
+
$ntoggle = NthToggle->new(1, 3);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
main();
|
73
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# The Computer Language Shootout
|
2
|
+
# http://shootout.alioth.debian.org/
|
3
|
+
# Contributed by Emanuele Zeppieri
|
4
|
+
|
5
|
+
my $N = shift || 2_500_000;
|
6
|
+
|
7
|
+
my ($s0, $s1, $s2, $s3, $s4, $s5, $s6, $s7, $s8, $k2, $k3, $ksin, $kcos);
|
8
|
+
my $alt = -1;
|
9
|
+
sub TWO_THIRDS () { 2/3 }
|
10
|
+
|
11
|
+
for (1..$N) {
|
12
|
+
$s0 += TWO_THIRDS ** ($_ - 1);
|
13
|
+
$s1 += 1 / sqrt;
|
14
|
+
$s2 += 1 / ( $_ * ($_ + 1));
|
15
|
+
$s3 += 1 / ( ($k3 = ($k2 = $_ * $_) * $_) * ($ksin = sin) * $ksin );
|
16
|
+
$s4 += 1 / ( $k3 * ($kcos = cos) * $kcos );
|
17
|
+
$s5 += 1 / $_;
|
18
|
+
$s6 += 1 / $k2;
|
19
|
+
$s7 += ($alt = -$alt) / $_;
|
20
|
+
$s8 += $alt / (2 * $_ - 1)
|
21
|
+
}
|
22
|
+
|
23
|
+
printf "%0.9f\t(2/3)^k\n" , $s0;
|
24
|
+
printf "%0.9f\tk^-0.5\n" , $s1;
|
25
|
+
printf "%0.9f\t1/k(k+1)\n" , $s2;
|
26
|
+
printf "%0.9f\tFlint Hills\n" , $s3;
|
27
|
+
printf "%0.9f\tCookson Hills\n" , $s4;
|
28
|
+
printf "%0.9f\tHarmonic\n" , $s5;
|
29
|
+
printf "%0.9f\tRiemann Zeta\n" , $s6;
|
30
|
+
printf "%0.9f\tAlternating Harmonic\n", $s7;
|
31
|
+
printf "%0.9f\tGregory\n" , $s8
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# The Computer Language Shootout
|
2
|
+
# http://shootout.alioth.debian.org/
|
3
|
+
#
|
4
|
+
# contributed by Robert Bradshaw
|
5
|
+
# modified by Ruud H.G.van Tol
|
6
|
+
# modified by Emanuele Zeppieri
|
7
|
+
|
8
|
+
use strict;
|
9
|
+
|
10
|
+
use Math::BigInt lib => 'GMP';
|
11
|
+
|
12
|
+
die 'Math::BigInt::GMP missing!'
|
13
|
+
if Math::BigInt->config->{lib} ne 'Math::BigInt::GMP';
|
14
|
+
|
15
|
+
my $z0 = Math::BigInt->new(1);
|
16
|
+
my $z1 = Math::BigInt->new(0);
|
17
|
+
my $z2 = Math::BigInt->new(1);
|
18
|
+
|
19
|
+
sub extract_digit { return scalar( ($z0 * $_[0] + $z1) / $z2 ) }
|
20
|
+
|
21
|
+
sub compose {
|
22
|
+
if ( defined $_[3] ) {
|
23
|
+
$z1->bmul( $_[0] )->badd( $_[1] * $z2 )
|
24
|
+
} else {
|
25
|
+
$z1->bmul( $_[2] )->badd( $_[1] * $z0 )
|
26
|
+
}
|
27
|
+
$z0->bmul( $_[0] );
|
28
|
+
$z2->bmul( $_[2] );
|
29
|
+
return
|
30
|
+
}
|
31
|
+
|
32
|
+
my $n = $ARGV[0];
|
33
|
+
($,, $\) = ("\t", "\n");
|
34
|
+
my ($i, $s, $d); my $k = 0;
|
35
|
+
|
36
|
+
# main loop
|
37
|
+
for $i (1..$n) {
|
38
|
+
while (
|
39
|
+
$z0->bcmp($z2) == 1 || ( $d = extract_digit(3) ) != extract_digit(4)
|
40
|
+
) {
|
41
|
+
# y not safe
|
42
|
+
$k++; compose($k, 4*$k+2, 2*$k+1)
|
43
|
+
}
|
44
|
+
compose(10, -10*$d, 1, 1);
|
45
|
+
$s .= $d;
|
46
|
+
|
47
|
+
unless ( $i % 10 ) { print $s, ":$i"; undef $s }
|
48
|
+
}
|
49
|
+
|
50
|
+
$s .= ' ' x (10-$i) if $i = $n % 10;
|
51
|
+
|
52
|
+
print $s, ":$n" if $s
|