chrislo-sourceclassifier 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +0 -312
- data/Rakefile +2 -2
- data/sourceclassifier.gemspec +6 -6
- metadata +4 -316
- data/sources/gcc/ackermann.gcc-2.gcc +0 -93
- data/sources/gcc/ackermann.gcc-3.gcc +0 -20
- data/sources/gcc/ary.gcc +0 -40
- data/sources/gcc/binarytrees.gcc +0 -136
- data/sources/gcc/binarytrees.gcc-2.gcc +0 -140
- data/sources/gcc/binarytrees.gcc-3.gcc +0 -134
- data/sources/gcc/chameneos.gcc +0 -117
- data/sources/gcc/chameneos.gcc-2.gcc +0 -134
- data/sources/gcc/chameneos.gcc-3.gcc +0 -120
- data/sources/gcc/chameneosredux.gcc +0 -306
- data/sources/gcc/echo.gcc +0 -144
- data/sources/gcc/except.gcc +0 -52
- data/sources/gcc/fannkuch.gcc +0 -105
- data/sources/gcc/fannkuch.gcc-2.gcc +0 -94
- data/sources/gcc/fasta.gcc +0 -158
- data/sources/gcc/fasta.gcc-2.gcc +0 -132
- data/sources/gcc/fasta.gcc-3.gcc +0 -145
- data/sources/gcc/fasta.gcc-4.gcc +0 -141
- data/sources/gcc/fibo.gcc +0 -20
- data/sources/gcc/harmonic.gcc +0 -22
- data/sources/gcc/hash.gcc +0 -31
- data/sources/gcc/hash2.gcc +0 -38
- data/sources/gcc/heapsort.gcc +0 -72
- data/sources/gcc/hello.gcc-2.gcc +0 -12
- data/sources/gcc/hello.gcc-3.gcc +0 -20
- data/sources/gcc/knucleotide.gcc +0 -173
- data/sources/gcc/knucleotide.gcc-2.gcc +0 -168
- data/sources/gcc/lists.gcc +0 -226
- data/sources/gcc/magicsquares.gcc +0 -378
- data/sources/gcc/mandelbrot.gcc +0 -84
- data/sources/gcc/mandelbrot.gcc-2.gcc +0 -63
- data/sources/gcc/mandelbrot.gcc-3.gcc +0 -91
- data/sources/gcc/mandelbrot.gcc-4.gcc +0 -78
- data/sources/gcc/matrix.gcc +0 -66
- data/sources/gcc/message.gcc-2.gcc +0 -72
- data/sources/gcc/message.gcc-3.gcc +0 -64
- data/sources/gcc/methcall.gcc +0 -89
- data/sources/gcc/moments.gcc +0 -120
- data/sources/gcc/nbody.gcc +0 -142
- data/sources/gcc/nbody.gcc-2.gcc +0 -143
- data/sources/gcc/nbody.gcc-3.gcc +0 -142
- data/sources/gcc/nestedloop.gcc +0 -25
- data/sources/gcc/nsieve.gcc +0 -35
- data/sources/gcc/nsievebits.gcc-2.gcc +0 -37
- data/sources/gcc/nsievebits.gcc-3.gcc +0 -53
- data/sources/gcc/objinst.gcc +0 -95
- data/sources/gcc/partialsums.gcc +0 -86
- data/sources/gcc/partialsums.gcc-3.gcc +0 -81
- data/sources/gcc/partialsums.gcc-4.gcc +0 -68
- data/sources/gcc/pidigits.gcc +0 -105
- data/sources/gcc/primes.gcc +0 -75
- data/sources/gcc/prodcons.gcc +0 -86
- data/sources/gcc/random.gcc +0 -29
- data/sources/gcc/raytracer.gcc +0 -125
- data/sources/gcc/raytracer.gcc-2.gcc +0 -181
- data/sources/gcc/recursive.gcc +0 -68
- data/sources/gcc/recursive.gcc-2.gcc +0 -55
- data/sources/gcc/regexdna.gcc-2.gcc +0 -126
- data/sources/gcc/regexmatch.gcc +0 -136
- data/sources/gcc/revcomp.gcc +0 -85
- data/sources/gcc/revcomp.gcc-2.gcc +0 -88
- data/sources/gcc/revcomp.gcc-4.gcc +0 -71
- data/sources/gcc/reversefile.gcc +0 -103
- data/sources/gcc/reversefile.gcc-2.gcc +0 -56
- data/sources/gcc/sieve.gcc +0 -34
- data/sources/gcc/spectralnorm.gcc +0 -54
- data/sources/gcc/spellcheck.gcc +0 -72
- data/sources/gcc/spellcheck.gcc-2.gcc +0 -61
- data/sources/gcc/strcat.gcc +0 -38
- data/sources/gcc/sumcol.gcc-2.gcc +0 -98
- data/sources/gcc/sumcol.gcc-3.gcc +0 -22
- data/sources/gcc/sumcol.gcc-4.gcc +0 -18
- data/sources/gcc/sumcol.gcc-5.gcc +0 -32
- data/sources/gcc/takfp.gcc +0 -23
- data/sources/gcc/tcp-stream.gcc +0 -122
- data/sources/gcc/tcpecho.gcc +0 -122
- data/sources/gcc/tcpecho.gcc-2.gcc +0 -136
- data/sources/gcc/tcprequest.gcc +0 -122
- data/sources/gcc/threadring.gcc +0 -73
- data/sources/gcc/wc.gcc +0 -52
- data/sources/gcc/wc.gcc-2.gcc +0 -40
- data/sources/gcc/wc.gcc-3.gcc +0 -46
- data/sources/gcc/wordfreq.gcc-2.gcc +0 -85
- data/sources/perl/ackermann.perl +0 -28
- data/sources/perl/ackermann.perl-2.perl +0 -25
- data/sources/perl/ackermann.perl-3.perl +0 -20
- data/sources/perl/ackermann.perl-4.perl +0 -18
- data/sources/perl/ary.perl +0 -25
- data/sources/perl/ary.perl-2.perl +0 -23
- data/sources/perl/binarytrees.perl +0 -66
- data/sources/perl/binarytrees.perl-2.perl +0 -71
- data/sources/perl/chameneos.perl +0 -67
- data/sources/perl/echo.perl +0 -81
- data/sources/perl/except.perl +0 -73
- data/sources/perl/fannkuch.perl +0 -44
- data/sources/perl/fannkuch.perl-2.perl +0 -38
- data/sources/perl/fasta.perl +0 -112
- data/sources/perl/fasta.perl-2.perl +0 -135
- data/sources/perl/fasta.perl-4.perl +0 -122
- data/sources/perl/fibo.perl +0 -15
- data/sources/perl/fibo.perl-2.perl +0 -0
- data/sources/perl/fibo.perl-3.perl +0 -0
- data/sources/perl/harmonic.perl +0 -7
- data/sources/perl/hash.perl +0 -23
- data/sources/perl/hash.perl-2.perl +0 -17
- data/sources/perl/hash.perl-3.perl +0 -24
- data/sources/perl/hash2.perl +0 -16
- data/sources/perl/heapsort.perl +0 -65
- data/sources/perl/heapsort.perl-2.perl +0 -0
- data/sources/perl/hello.perl +0 -5
- data/sources/perl/knucleotide.perl-2.perl +0 -30
- data/sources/perl/lists.perl +0 -48
- data/sources/perl/mandelbrot.perl-2.perl +0 -32
- data/sources/perl/matrix.perl +0 -59
- data/sources/perl/matrix.perl-2.perl +0 -0
- data/sources/perl/matrix.perl-3.perl +0 -0
- data/sources/perl/message.perl +0 -27
- data/sources/perl/methcall.perl +0 -66
- data/sources/perl/moments.perl +0 -44
- data/sources/perl/nbody.perl +0 -108
- data/sources/perl/nestedloop.perl +0 -28
- data/sources/perl/nsieve.perl-2.perl +0 -41
- data/sources/perl/nsieve.perl-4.perl +0 -43
- data/sources/perl/nsievebits.perl +0 -37
- data/sources/perl/objinst.perl +0 -73
- data/sources/perl/partialsums.perl-3.perl +0 -31
- data/sources/perl/pidigits.perl +0 -52
- data/sources/perl/pidigits.perl-2.perl +0 -47
- data/sources/perl/process.perl +0 -50
- data/sources/perl/prodcons.perl +0 -47
- data/sources/perl/random.perl-4.perl +0 -17
- data/sources/perl/recursive.perl-2.perl +0 -57
- data/sources/perl/regexdna.perl +0 -48
- data/sources/perl/regexdna.perl-2.perl +0 -43
- data/sources/perl/regexdna.perl-3.perl +0 -50
- data/sources/perl/regexdna.perl-4.perl +0 -49
- data/sources/perl/regexdna.perl-5.perl +0 -42
- data/sources/perl/regexdna.perl-6.perl +0 -43
- data/sources/perl/regexmatch.perl +0 -35
- data/sources/perl/revcomp.perl-2.perl +0 -34
- data/sources/perl/reversefile.perl +0 -8
- data/sources/perl/reversefile.perl-2.perl +0 -0
- data/sources/perl/reversefile.perl-3.perl +0 -0
- data/sources/perl/sieve.perl +0 -23
- data/sources/perl/spectralnorm.perl-2.perl +0 -54
- data/sources/perl/spellcheck.perl +0 -24
- data/sources/perl/strcat.perl +0 -13
- data/sources/perl/strcat.perl-2.perl +0 -0
- data/sources/perl/sumcol.perl +0 -8
- data/sources/perl/takfp.perl +0 -23
- data/sources/perl/takfp.perl-3.perl +0 -20
- data/sources/perl/tcpecho.perl +0 -61
- data/sources/perl/tcprequest.perl +0 -61
- data/sources/perl/tcpstream.perl +0 -61
- data/sources/perl/threadring.perl +0 -55
- data/sources/perl/threadring.perl-2.perl +0 -43
- data/sources/perl/wc.perl +0 -20
- data/sources/perl/wc.perl-2.perl +0 -14
- data/sources/perl/wordfreq.perl +0 -22
- data/sources/perl/wordfreq.perl-3.perl +0 -0
- data/sources/perl/wordfreq.perl3.perl +0 -0
- data/sources/python/ackermann.python +0 -21
- data/sources/python/ary.python +0 -19
- data/sources/python/binarytrees.python +0 -39
- data/sources/python/binarytrees.python-3.python +0 -44
- data/sources/python/chameneos.python-6.python +0 -73
- data/sources/python/chameneosredux.python +0 -126
- data/sources/python/chameneosredux.python-2.python +0 -122
- data/sources/python/dispatch.python +0 -176
- data/sources/python/dispatch.python-2.python +0 -136
- data/sources/python/echo.python +0 -64
- data/sources/python/except.python +0 -62
- data/sources/python/fannkuch.python +0 -50
- data/sources/python/fannkuch.python-2.python +0 -54
- data/sources/python/fasta.python-2.python +0 -79
- data/sources/python/fibo.python +0 -17
- 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 +0 -9
- data/sources/python/hash.python +0 -21
- data/sources/python/hash.python-2.python +0 -0
- data/sources/python/hash2.python +0 -30
- data/sources/python/heapsort.python-3.python +0 -66
- data/sources/python/hello.python +0 -5
- data/sources/python/implicitode.python +0 -231
- data/sources/python/knucleotide.python +0 -55
- data/sources/python/lists.python +0 -44
- data/sources/python/magicsquares.python +0 -145
- data/sources/python/mandelbrot.python +0 -44
- data/sources/python/mandelbrot.python-2.python +0 -35
- data/sources/python/mandelbrot.python-3.python +0 -46
- data/sources/python/matrix.python +0 -34
- data/sources/python/matrix.python-2.python +0 -23
- data/sources/python/message.python +0 -24
- data/sources/python/message.python-2.python +0 -20
- data/sources/python/message.python-3.python +0 -19
- data/sources/python/meteor.python +0 -210
- data/sources/python/meteor.python-2.python +0 -192
- data/sources/python/methcall.python +0 -51
- data/sources/python/moments.python +0 -65
- data/sources/python/nbody.python +0 -123
- data/sources/python/nbody.python-2.python +0 -120
- data/sources/python/nestedloop.python +0 -24
- data/sources/python/nsieve.python +0 -27
- data/sources/python/nsieve.python-2.python +0 -23
- data/sources/python/nsieve.python-4.python +0 -25
- data/sources/python/nsievebits.python +0 -27
- data/sources/python/nsievebits.python-2.python +0 -43
- data/sources/python/objinst.python +0 -53
- data/sources/python/partialsums.python +0 -37
- data/sources/python/partialsums.python-2.python +0 -35
- data/sources/python/partialsums.python-3.python +0 -48
- data/sources/python/pidigits.python +0 -38
- data/sources/python/pidigits.python-3.python +0 -63
- data/sources/python/pidigits.python-4.python +0 -24
- data/sources/python/process.python +0 -51
- data/sources/python/process.python-2.python +0 -133
- data/sources/python/prodcons.python +0 -51
- data/sources/python/prodcons.python-2.python +0 -0
- data/sources/python/random.python +0 -27
- data/sources/python/raytracer.python +0 -203
- data/sources/python/recursive.python +0 -35
- data/sources/python/regexdna.python +0 -39
- data/sources/python/regexdna.python-2.python +0 -34
- data/sources/python/regexmatch.python +0 -36
- data/sources/python/revcomp.python-3.python +0 -31
- data/sources/python/reversefile.python +0 -13
- data/sources/python/reversefile.python-2.python +0 -0
- data/sources/python/reversefile.python-3.python +0 -0
- data/sources/python/sieve.python +0 -50
- data/sources/python/spectralnorm.python-2.python +0 -36
- data/sources/python/spellcheck.python +0 -17
- data/sources/python/strcat.python +0 -35
- 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 +0 -19
- data/sources/python/tcpecho.python +0 -67
- data/sources/python/tcprequest.python +0 -67
- data/sources/python/tcpstream.python +0 -67
- data/sources/python/threadring.python +0 -47
- data/sources/python/threadring.python-2.python +0 -40
- data/sources/python/threadring.python-3.python +0 -34
- data/sources/python/wc.python-2.python +0 -19
- data/sources/python/wordfreq.python +0 -43
- data/sources/python/wordfreq.python-2.python +0 -0
- data/sources/python/wordfreq.python-3.python +0 -28
- data/sources/python/wordfreq.python-4.python +0 -38
- data/sources/python/wordfreq.python-5.python +0 -39
- data/sources/ruby/ackermann.ruby +0 -17
- data/sources/ruby/ackermann.ruby-5.ruby +0 -153
- data/sources/ruby/ary.ruby +0 -22
- data/sources/ruby/binarytrees.ruby-2.ruby +0 -55
- data/sources/ruby/chameneos.ruby-2.ruby +0 -71
- data/sources/ruby/dispatch.ruby +0 -114
- data/sources/ruby/echo.ruby +0 -41
- data/sources/ruby/except.ruby +0 -61
- data/sources/ruby/except.ruby-2.ruby +0 -61
- data/sources/ruby/fannkuch.ruby +0 -42
- data/sources/ruby/fasta.ruby +0 -81
- data/sources/ruby/fibo.ruby +0 -15
- data/sources/ruby/harmonic.ruby-2.ruby +0 -15
- data/sources/ruby/hash.ruby +0 -19
- data/sources/ruby/hash2.ruby +0 -23
- data/sources/ruby/heapsort.ruby +0 -55
- data/sources/ruby/hello.ruby +0 -6
- data/sources/ruby/knucleotide.ruby-2.ruby +0 -44
- data/sources/ruby/lists.ruby +0 -46
- data/sources/ruby/mandelbrot.ruby-3.ruby +0 -63
- data/sources/ruby/matrix.ruby +0 -40
- data/sources/ruby/matrix.ruby-2.ruby +0 -30
- data/sources/ruby/message.ruby +0 -29
- data/sources/ruby/message.ruby-2.ruby +0 -24
- data/sources/ruby/meteor.ruby +0 -386
- data/sources/ruby/meteor.ruby-2.ruby +0 -561
- data/sources/ruby/methcall.ruby +0 -58
- data/sources/ruby/methcall.ruby-2.ruby +0 -54
- data/sources/ruby/moments.ruby +0 -64
- data/sources/ruby/nbody.ruby-2.ruby +0 -145
- data/sources/ruby/nestedloop.ruby +0 -22
- data/sources/ruby/nsieve.ruby +0 -36
- data/sources/ruby/nsieve.ruby-2.ruby +0 -25
- data/sources/ruby/nsievebits.ruby-2.ruby +0 -42
- data/sources/ruby/objinst.ruby +0 -58
- data/sources/ruby/partialsums.ruby +0 -39
- data/sources/ruby/pidigits.ruby +0 -92
- data/sources/ruby/pidigits.ruby-2.ruby +0 -109
- data/sources/ruby/prodcons.ruby +0 -41
- data/sources/ruby/random.ruby +0 -17
- data/sources/ruby/recursive.ruby-2.ruby +0 -53
- data/sources/ruby/regexdna.ruby +0 -32
- data/sources/ruby/regexdna.ruby-2.ruby +0 -38
- data/sources/ruby/regexmatch.ruby +0 -33
- data/sources/ruby/revcomp.ruby +0 -28
- data/sources/ruby/reversefile.ruby +0 -7
- data/sources/ruby/sieve.ruby +0 -30
- data/sources/ruby/spectralnorm.ruby +0 -48
- data/sources/ruby/spellcheck.ruby +0 -18
- data/sources/ruby/spellcheck.ruby-2.ruby +0 -0
- data/sources/ruby/strcat.ruby +0 -12
- data/sources/ruby/strcat.ruby-2.ruby +0 -12
- data/sources/ruby/sumcol.ruby +0 -12
- data/sources/ruby/sumcol.ruby-2.ruby +0 -5
- data/sources/ruby/takfp.ruby +0 -15
- data/sources/ruby/tcpecho.ruby +0 -45
- data/sources/ruby/tcprequest.ruby +0 -45
- data/sources/ruby/tcpstream.ruby +0 -45
- data/sources/ruby/threadring.ruby +0 -61
- data/sources/ruby/threadring.ruby-2.ruby +0 -33
- data/sources/ruby/wc.ruby +0 -15
- data/sources/ruby/wordfreq.ruby +0 -17
- data/sources/ruby/wordfreq.ruby2.ruby +0 -0
data/sources/gcc/raytracer.gcc
DELETED
@@ -1,125 +0,0 @@
|
|
1
|
-
/* -*- mode: c -*-
|
2
|
-
* The Great Computer Language Shootout
|
3
|
-
* http://shootout.alioth.debian.org/
|
4
|
-
*
|
5
|
-
* Jon Harrop, 2005
|
6
|
-
* Compile: gcc -Wall -O3 -ffast-math -lm -std=c99 raytracer.c -o raytracer
|
7
|
-
*/
|
8
|
-
|
9
|
-
|
10
|
-
#include <float.h>
|
11
|
-
#include <math.h>
|
12
|
-
#include <stdlib.h>
|
13
|
-
#include <stdio.h>
|
14
|
-
|
15
|
-
double delta;
|
16
|
-
|
17
|
-
typedef struct { double x, y, z; } Vec;
|
18
|
-
Vec vec(double ix, double iy, double iz)
|
19
|
-
{ Vec a; a.x = ix; a.y = iy; a.z = iz; return a; }
|
20
|
-
Vec add(Vec a, Vec b) { return vec(a.x + b.x, a.y + b.y, a.z + b.z); }
|
21
|
-
Vec sub(Vec a, Vec b) { return vec(a.x - b.x, a.y - b.y, a.z - b.z); }
|
22
|
-
Vec scale(double a, Vec b) { return vec(a * b.x, a * b.y, a * b.z); }
|
23
|
-
double dot(Vec a, Vec b) { return a.x*b.x + a.y*b.y + a.z*b.z; }
|
24
|
-
Vec unitise(Vec a) { return scale(1 / sqrt(dot(a, a)), a); }
|
25
|
-
|
26
|
-
typedef struct { Vec orig, dir; } Ray;
|
27
|
-
Ray ray(Vec o, Vec d) { Ray r; r.orig = o; r.dir = d; return r; }
|
28
|
-
|
29
|
-
typedef enum {SphereTag, GroupTag} Tag;
|
30
|
-
typedef struct { Vec center; double radius; } Sphere;
|
31
|
-
Sphere sphere(Vec c, double r) { Sphere s; s.center=c; s.radius=r; return s; }
|
32
|
-
typedef struct { Sphere bound; int n; void *child; } Group;
|
33
|
-
typedef struct { Tag tag; union { Sphere s; Group g; } data; } Scene;
|
34
|
-
|
35
|
-
double ray_sphere(const Ray *r, const Sphere *s) {
|
36
|
-
Vec v = sub(s->center, r->orig);
|
37
|
-
double b = dot(v, r->dir), disc = b*b - dot(v, v) + s->radius * s->radius;
|
38
|
-
if (disc < 0) return INFINITY;
|
39
|
-
double d = sqrt(disc), t2 = b + d;
|
40
|
-
if (t2 < 0) return INFINITY;
|
41
|
-
double t1 = b - d;
|
42
|
-
return (t1 > 0 ? t1 : t2);
|
43
|
-
}
|
44
|
-
|
45
|
-
void intersect(double *lambda, Vec *normal, const Ray *r, const Scene scene) {
|
46
|
-
switch (scene.tag) {
|
47
|
-
case SphereTag : {
|
48
|
-
Sphere s = scene.data.s;
|
49
|
-
double l = ray_sphere(r, &s);
|
50
|
-
if (l >= *lambda) return;
|
51
|
-
*lambda = l;
|
52
|
-
*normal = unitise(add(r->orig, sub(scale(l, r->dir), s.center)));
|
53
|
-
break;
|
54
|
-
}
|
55
|
-
case GroupTag : {
|
56
|
-
Group g = scene.data.g;
|
57
|
-
if (ray_sphere(r, &g.bound) >= *lambda) return;
|
58
|
-
for (int i=0; i<g.n; ++i)
|
59
|
-
intersect(lambda, normal, r, ((Scene *)g.child)[i]);
|
60
|
-
break;
|
61
|
-
}
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
double ray_trace(Vec light, Ray r, Scene scene) {
|
66
|
-
double lambda = INFINITY;
|
67
|
-
Vec n = vec(0, 0, 0);
|
68
|
-
intersect(&lambda, &n, &r, scene);
|
69
|
-
if (lambda == INFINITY) return 0;
|
70
|
-
double g = dot(n, light), l = INFINITY;
|
71
|
-
if (g <= 0) return 0.;
|
72
|
-
Ray r2 = ray(add(r.orig, scale(lambda, add(r.dir, scale(delta, n)))),
|
73
|
-
light);
|
74
|
-
intersect(&l, &n, &r2, scene);
|
75
|
-
return (l == INFINITY ? g : 0);
|
76
|
-
}
|
77
|
-
|
78
|
-
Scene create(int level, double r, double x, double y, double z) {
|
79
|
-
Scene scene;
|
80
|
-
if (level == 1) {
|
81
|
-
scene.tag = SphereTag;
|
82
|
-
scene.data.s = sphere(vec(x, y, z), r);
|
83
|
-
} else {
|
84
|
-
Group *g = &scene.data.g;
|
85
|
-
Scene *cs;
|
86
|
-
scene.tag = GroupTag;
|
87
|
-
g->bound = sphere(vec(x, y, z), 3*r);
|
88
|
-
g->n = 5;
|
89
|
-
g->child = cs = (Scene *)malloc(g->n * sizeof(Scene));
|
90
|
-
double rn = 3*r/sqrt(12.);
|
91
|
-
for (int i=0; i<4; ++i)
|
92
|
-
cs[i] = create(level-1, r/2,
|
93
|
-
x - ((i&1)*2-1)*rn, y + rn, z - ((i/2)*2-1)*rn);
|
94
|
-
cs[g->n - 1] = create(1, r, x, y, z);
|
95
|
-
}
|
96
|
-
return scene;
|
97
|
-
}
|
98
|
-
|
99
|
-
void destroy(Scene scene) {
|
100
|
-
if (scene.tag == GroupTag) {
|
101
|
-
for (int i=0; i<scene.data.g.n; ++i)
|
102
|
-
destroy(((Scene *)scene.data.g.child)[i]);
|
103
|
-
free(scene.data.g.child);
|
104
|
-
}
|
105
|
-
}
|
106
|
-
|
107
|
-
int main(int argc, char *argv[]) {
|
108
|
-
delta = sqrt(DBL_EPSILON);
|
109
|
-
int level = 6, n = (argc==2 ? atoi(argv[1]) : 256), ss = 4;
|
110
|
-
Vec light = sub(vec(0, 0, 0), unitise(vec(-1, -3, 2)));
|
111
|
-
Scene scene = create(level, 1, 0, -1, 0); // Build the scene
|
112
|
-
printf("P5\n%d %d\n255\n", n, n);
|
113
|
-
for (int y=n-1; y>=0; --y)
|
114
|
-
for (int x=0; x<n; ++x) {
|
115
|
-
double g=0;
|
116
|
-
for (int dx=0; dx<ss; ++dx)
|
117
|
-
for (int dy=0; dy<ss; ++dy) {
|
118
|
-
Vec d=vec(x+(double)dx/ss-n/2., y+(double)dy/ss-n/2., n);
|
119
|
-
g += ray_trace(light, ray(vec(0, 0, -4), unitise(d)), scene);
|
120
|
-
}
|
121
|
-
printf("%c", (char)(.5 + 255*g/(ss*ss)));
|
122
|
-
}
|
123
|
-
destroy(scene);
|
124
|
-
return 0;
|
125
|
-
}
|
@@ -1,181 +0,0 @@
|
|
1
|
-
#include <stdlib.h>
|
2
|
-
#include <stdio.h>
|
3
|
-
#include <math.h>
|
4
|
-
#include <float.h>
|
5
|
-
|
6
|
-
#ifndef INFINITY
|
7
|
-
# define INFINITY DBL_MAX
|
8
|
-
#endif
|
9
|
-
|
10
|
-
#define DELTA 1.49012e-08
|
11
|
-
|
12
|
-
typedef struct { double x, y, z; } Vec;
|
13
|
-
static __inline__ Vec vec(double ix, double iy, double iz)
|
14
|
-
{ Vec a; a.x = ix; a.y = iy; a.z = iz; return a; }
|
15
|
-
static __inline__ Vec add(Vec a, Vec b) { return vec(a.x + b.x, a.y + b.y, a.z + b.z); }
|
16
|
-
static __inline__ Vec sub(Vec a, Vec b) { return vec(a.x - b.x, a.y - b.y, a.z - b.z); }
|
17
|
-
static __inline__ Vec scale(double a, Vec b) { return vec(a * b.x, a * b.y, a * b.z); }
|
18
|
-
static __inline__ double dot(Vec a, Vec b) { return a.x*b.x + a.y*b.y + a.z*b.z; }
|
19
|
-
static __inline__ Vec unitise(Vec a) { return scale(1 / sqrt(dot(a, a)), a); }
|
20
|
-
|
21
|
-
typedef struct { Vec orig, dir; } Ray;
|
22
|
-
static __inline__ Ray ray(Vec o, Vec d) { Ray r; r.orig = o; r.dir = d; return r; }
|
23
|
-
|
24
|
-
typedef struct _tSphere Sphere;
|
25
|
-
typedef struct _tGroup Group;
|
26
|
-
typedef struct _tScene_Object Scene;
|
27
|
-
|
28
|
-
#define SCENE_OBJECT(T) \
|
29
|
-
void (*intersect) (T*, double *, Vec *, const Ray *); \
|
30
|
-
void (*destroy) (T *)
|
31
|
-
|
32
|
-
struct _tScene_Object
|
33
|
-
{
|
34
|
-
SCENE_OBJECT(Scene);
|
35
|
-
};
|
36
|
-
static Scene *scene_new (int, double, double, double, double);
|
37
|
-
|
38
|
-
struct _tSphere
|
39
|
-
{
|
40
|
-
SCENE_OBJECT(Sphere);
|
41
|
-
Vec center; double radius;
|
42
|
-
};
|
43
|
-
|
44
|
-
static __inline__ double ray_sphere (const Ray *r, const Sphere *s)
|
45
|
-
{
|
46
|
-
double d, t1, t2;
|
47
|
-
Vec v = sub(s->center, r->orig);
|
48
|
-
double b = dot(v, r->dir), disc = b*b - dot(v, v) + s->radius * s->radius;
|
49
|
-
if (disc < 0) return INFINITY;
|
50
|
-
d = sqrt(disc), t2 = b + d;
|
51
|
-
if (t2 < 0) return INFINITY;
|
52
|
-
t1 = b - d;
|
53
|
-
return (t1 > 0 ? t1 : t2);
|
54
|
-
}
|
55
|
-
|
56
|
-
static void sphere_intersect (Sphere *s, double *lambda, Vec *normal, const Ray *r)
|
57
|
-
{
|
58
|
-
double l = ray_sphere(r, s);
|
59
|
-
if (l >= *lambda) return;
|
60
|
-
*lambda = l;
|
61
|
-
*normal = unitise (add(r->orig, sub(scale(l, r->dir), s->center)));
|
62
|
-
}
|
63
|
-
|
64
|
-
static void sphere_destroy (Sphere *s)
|
65
|
-
{
|
66
|
-
free ((char *)s);
|
67
|
-
}
|
68
|
-
|
69
|
-
static Sphere *sphere_new (double r, double x, double y, double z)
|
70
|
-
{
|
71
|
-
Sphere *s = (Sphere *) calloc (1, sizeof (Sphere));
|
72
|
-
s->intersect = sphere_intersect;
|
73
|
-
s->destroy = sphere_destroy;
|
74
|
-
s->center=vec(x,y,z); s->radius=r;
|
75
|
-
return s;
|
76
|
-
}
|
77
|
-
|
78
|
-
struct _tGroup
|
79
|
-
{
|
80
|
-
SCENE_OBJECT(Group);
|
81
|
-
Sphere *bound;
|
82
|
-
#define NUM_GROUP_MEMBERS 5
|
83
|
-
Scene *members[NUM_GROUP_MEMBERS];
|
84
|
-
};
|
85
|
-
|
86
|
-
static void group_intersect (Group *g, double *lambda, Vec *normal, const Ray *r)
|
87
|
-
{
|
88
|
-
int i;
|
89
|
-
|
90
|
-
if (ray_sphere (r, g->bound) >= *lambda)
|
91
|
-
return;
|
92
|
-
|
93
|
-
for (i = 0; i < NUM_GROUP_MEMBERS; i++)
|
94
|
-
{
|
95
|
-
Scene *s = g->members[i];
|
96
|
-
(*s->intersect) (s, lambda, normal, r);
|
97
|
-
}
|
98
|
-
}
|
99
|
-
|
100
|
-
static void group_destroy (Group *g)
|
101
|
-
{
|
102
|
-
int i;
|
103
|
-
|
104
|
-
(*g->bound->destroy) (g->bound);
|
105
|
-
for (i = 0; i < NUM_GROUP_MEMBERS; i++)
|
106
|
-
{
|
107
|
-
Scene *s = g->members[i];
|
108
|
-
(*s->destroy) (s);
|
109
|
-
}
|
110
|
-
free ((char *)g);
|
111
|
-
}
|
112
|
-
|
113
|
-
static Group *group_new (int level, double r, double x, double y, double z)
|
114
|
-
{
|
115
|
-
static double dz[NUM_GROUP_MEMBERS] = {-1, -1, 1, 1, 0};
|
116
|
-
static double dx[NUM_GROUP_MEMBERS] = {-1, 1, -1, 1, 0};
|
117
|
-
double rn;
|
118
|
-
int i;
|
119
|
-
Group *g = (Group *)calloc (1, sizeof (Group));
|
120
|
-
g->intersect = group_intersect;
|
121
|
-
g->destroy = group_destroy;
|
122
|
-
g->bound = sphere_new (3*r, x, y, z);
|
123
|
-
rn = 3*r/sqrt(12.0);
|
124
|
-
for (i = 0; i < NUM_GROUP_MEMBERS-1; i++)
|
125
|
-
g->members[i] = scene_new (level, 0.5*r, x-dx[i]*rn, y+rn, z-dz[i]*rn);
|
126
|
-
g->members[NUM_GROUP_MEMBERS-1] = scene_new (1, r, x, y, z);
|
127
|
-
|
128
|
-
return g;
|
129
|
-
}
|
130
|
-
|
131
|
-
static Scene *scene_new (int level, double r, double x, double y, double z)
|
132
|
-
{
|
133
|
-
if (level == 1)
|
134
|
-
return (Scene *) sphere_new (r, x, y, z);
|
135
|
-
return (Scene *) group_new (level-1, r, x, y, z);
|
136
|
-
}
|
137
|
-
|
138
|
-
|
139
|
-
static double ray_trace (Vec light, Ray r, Scene *scene)
|
140
|
-
{
|
141
|
-
double lambda = INFINITY, l, g;
|
142
|
-
Ray r2;
|
143
|
-
Vec n = vec(0, 0, 0);
|
144
|
-
(*scene->intersect) (scene, &lambda, &n, &r);
|
145
|
-
if (lambda == INFINITY) return 0.0;
|
146
|
-
if ((g = dot(n, light)) <= 0.0)
|
147
|
-
return 0.0;
|
148
|
-
l = INFINITY;
|
149
|
-
r2 = ray(add(r.orig, scale(lambda, add(r.dir, scale(DELTA, n)))), light);
|
150
|
-
(*scene->intersect) (scene, &l, &n, &r2);
|
151
|
-
return (l == INFINITY ? g : 0.0);
|
152
|
-
}
|
153
|
-
|
154
|
-
int main (int argc, char *argv[])
|
155
|
-
{
|
156
|
-
int x, y, dx, dy, level, n, ss;
|
157
|
-
Vec light;
|
158
|
-
Scene *scene;
|
159
|
-
level = 6, n = (argc==2 ? atoi(argv[1]) : 256), ss = 4;
|
160
|
-
light = sub(vec(0, 0, 0), unitise(vec(-1, -3, 2)));
|
161
|
-
scene = scene_new (level, 1, 0, -1, 0); /* Build the scene */
|
162
|
-
fprintf (stdout, "P5\n%d %d\n255\n", n, n);
|
163
|
-
for (y=n-1; y>=0; --y)
|
164
|
-
{
|
165
|
-
for (x=0; x<n; ++x)
|
166
|
-
{
|
167
|
-
double g=0.0;
|
168
|
-
for (dx=0; dx<ss; ++dx)
|
169
|
-
{
|
170
|
-
for (dy=0; dy<ss; ++dy)
|
171
|
-
{
|
172
|
-
Vec d=vec(x+(double)dx/ss-n/2., y+(double)dy/ss-n/2., n);
|
173
|
-
g += ray_trace(light, ray(vec(0, 0, -4), unitise(d)), scene);
|
174
|
-
}
|
175
|
-
}
|
176
|
-
putc ((char)(.5 + 255*g/(ss*ss)),stdout);
|
177
|
-
}
|
178
|
-
}
|
179
|
-
(*scene->destroy)(scene);
|
180
|
-
return 0;
|
181
|
-
}
|
data/sources/gcc/recursive.gcc
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* The Computer Language Benchmarks Game
|
3
|
-
* http://shootout.alioth.debian.org/
|
4
|
-
|
5
|
-
* contributed by bearophile, Jan 24 2006
|
6
|
-
* modified by wolfjb, Feb 28 2007
|
7
|
-
* modified by alex burlyga, may 16, 2008
|
8
|
-
*/
|
9
|
-
#include <stdio.h>
|
10
|
-
#include <stdlib.h>
|
11
|
-
|
12
|
-
static inline int ack(register int x, register int y) __attribute__((const));
|
13
|
-
static inline int fib(int n) __attribute__((const));
|
14
|
-
static inline double fibFP(double n) __attribute__((const));
|
15
|
-
static inline int tak(int x, int y, int z) __attribute__((const));
|
16
|
-
static inline double takFP(double x, double y, double z) __attribute__((const));
|
17
|
-
|
18
|
-
static inline int ack(register int x, register int y){
|
19
|
-
if (x == 0) {
|
20
|
-
return y + 1;
|
21
|
-
}
|
22
|
-
|
23
|
-
return ack(x - 1, ((y | 0) ? ack(x, y - 1) : 1));
|
24
|
-
}
|
25
|
-
|
26
|
-
static inline int fib(register int n) {
|
27
|
-
if (n < 2) {
|
28
|
-
return 1;
|
29
|
-
}
|
30
|
-
return fib(n - 2) + fib(n - 1);
|
31
|
-
}
|
32
|
-
|
33
|
-
static inline double fibFP(double n) {
|
34
|
-
if (n < 2.0) {
|
35
|
-
return 1.0;
|
36
|
-
}
|
37
|
-
return fibFP(n - 2.0) + fibFP(n - 1.0);
|
38
|
-
}
|
39
|
-
|
40
|
-
static inline int tak(register int x, register int y, register int z) {
|
41
|
-
if (y < x) {
|
42
|
-
return tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y));
|
43
|
-
}
|
44
|
-
return z;
|
45
|
-
}
|
46
|
-
|
47
|
-
static inline double takFP(double x, double y, double z) {
|
48
|
-
if (y < x)
|
49
|
-
return takFP( takFP(x-1.0, y, z), takFP(y-1.0, z, x), takFP(z-1.0, x, y) );
|
50
|
-
return z;
|
51
|
-
}
|
52
|
-
|
53
|
-
int
|
54
|
-
main(int argc, char ** argv) {
|
55
|
-
int n = 3;
|
56
|
-
|
57
|
-
if(argc > 1) {
|
58
|
-
n = strtol(argv[1], NULL, 10) - 1;
|
59
|
-
}
|
60
|
-
|
61
|
-
printf("Ack(3,%d): %d\n", n + 1, ack(3, n+1));
|
62
|
-
printf("Fib(%.1f): %.1f\n", 28.0 + n, fibFP(28.0+n));
|
63
|
-
printf("Tak(%d,%d,%d): %d\n", 3 * n, 2 * n, n, tak(3*n, 2*n, n));
|
64
|
-
printf("Fib(3): %d\n", fib(3));
|
65
|
-
printf("Tak(3.0,2.0,1.0): %.1f\n", takFP(3.0, 2.0, 1.0));
|
66
|
-
|
67
|
-
return 0;
|
68
|
-
}
|
@@ -1,55 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* The Computer Language Shootout
|
3
|
-
* http://shootout.alioth.debian.org/
|
4
|
-
|
5
|
-
* contributed by bearophile, Jan 24 2006
|
6
|
-
* modified by wolfjb, Feb 28 2007
|
7
|
-
*/
|
8
|
-
#include <stdio.h>
|
9
|
-
|
10
|
-
int ack(int x, int y) {
|
11
|
-
if (x == 0) {
|
12
|
-
return y + 1;
|
13
|
-
}
|
14
|
-
|
15
|
-
return ack(x - 1, ((y | 0) ? ack(x, y - 1) : 1));
|
16
|
-
}
|
17
|
-
|
18
|
-
int fib(int n) {
|
19
|
-
if (n < 2) {
|
20
|
-
return 1;
|
21
|
-
}
|
22
|
-
return fib(n - 2) + fib(n - 1);
|
23
|
-
}
|
24
|
-
|
25
|
-
double fibFP(double n) {
|
26
|
-
if (n < 2.0) {
|
27
|
-
return 1.0;
|
28
|
-
}
|
29
|
-
return fibFP(n - 2.0) + fibFP(n - 1.0);
|
30
|
-
}
|
31
|
-
|
32
|
-
int tak(int x, int y, int z) {
|
33
|
-
if (y < x) {
|
34
|
-
return tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y));
|
35
|
-
}
|
36
|
-
return z;
|
37
|
-
}
|
38
|
-
|
39
|
-
double takFP(double x, double y, double z) {
|
40
|
-
if (y < x)
|
41
|
-
return takFP( takFP(x-1.0, y, z), takFP(y-1.0, z, x), takFP(z-1.0, x, y) );
|
42
|
-
return z;
|
43
|
-
}
|
44
|
-
|
45
|
-
int main(int argc, char ** argv) {
|
46
|
-
int n = atoi(argv[1]) - 1;
|
47
|
-
|
48
|
-
printf("Ack(3,%d): %d\n", n + 1, ack(3, n+1));
|
49
|
-
printf("Fib(%.1f): %.1f\n", 28.0 + n, fibFP(28.0+n));
|
50
|
-
printf("Tak(%d,%d,%d): %d\n", 3 * n, 2 * n, n, tak(3*n, 2*n, n));
|
51
|
-
printf("Fib(3): %d\n", fib(3));
|
52
|
-
printf("Tak(3.0,2.0,1.0): %.1f\n", takFP(3.0, 2.0, 1.0));
|
53
|
-
|
54
|
-
return 0;
|
55
|
-
}
|
@@ -1,126 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
** The Computer Language Shootout
|
3
|
-
** http://shootout.alioth.debian.org/
|
4
|
-
** contributed by Mike Pall
|
5
|
-
**
|
6
|
-
** regex-dna benchmark using PCRE
|
7
|
-
**
|
8
|
-
** compile with:
|
9
|
-
** gcc -O3 -fomit-frame-pointer -o regexdna regexdna.c -lpcre
|
10
|
-
*/
|
11
|
-
|
12
|
-
#define __USE_STRING_INLINES
|
13
|
-
#include <stdio.h>
|
14
|
-
#include <string.h>
|
15
|
-
#include <stdlib.h>
|
16
|
-
#include <pcre.h>
|
17
|
-
|
18
|
-
typedef struct fbuf {
|
19
|
-
char *buf;
|
20
|
-
size_t size, len;
|
21
|
-
} fbuf_t;
|
22
|
-
|
23
|
-
static void fb_init(fbuf_t *b)
|
24
|
-
{
|
25
|
-
b->buf = NULL;
|
26
|
-
b->len = b->size = 0;
|
27
|
-
}
|
28
|
-
|
29
|
-
static char *fb_need(fbuf_t *b, size_t need)
|
30
|
-
{
|
31
|
-
need += b->len;
|
32
|
-
if (need > b->size) {
|
33
|
-
if (b->size == 0) b->size = need;
|
34
|
-
else while (need > b->size) b->size += b->size;
|
35
|
-
if (!(b->buf = realloc(b->buf, b->size))) exit(1);
|
36
|
-
}
|
37
|
-
return b->buf+b->len;
|
38
|
-
}
|
39
|
-
|
40
|
-
#define FB_MINREAD (3<<16)
|
41
|
-
|
42
|
-
/* Read all of a stdio stream into dst buffer. */
|
43
|
-
static size_t fb_readall(fbuf_t *dst, FILE *fp)
|
44
|
-
{
|
45
|
-
char *dp;
|
46
|
-
int n;
|
47
|
-
for (dp = fb_need(dst, FB_MINREAD);
|
48
|
-
(n = fread(dp, 1, dst->size-dst->len, fp)) > 0;
|
49
|
-
dp = fb_need(dst, FB_MINREAD)) dst->len += n;
|
50
|
-
if (ferror(fp)) exit(1);
|
51
|
-
return dst->len;
|
52
|
-
}
|
53
|
-
|
54
|
-
/* Substitute pattern p with replacement r, copying from src to dst buffer. */
|
55
|
-
static size_t fb_subst(fbuf_t *dst, fbuf_t *src, const char *p, const char *r)
|
56
|
-
{
|
57
|
-
pcre *re;
|
58
|
-
pcre_extra *re_ex;
|
59
|
-
const char *re_e;
|
60
|
-
char *dp;
|
61
|
-
int re_eo, m[3], pos, rlen, clen;
|
62
|
-
if (!(re = pcre_compile(p, PCRE_CASELESS, &re_e, &re_eo, NULL))) exit(1);
|
63
|
-
re_ex = pcre_study(re, 0, &re_e);
|
64
|
-
for (dst->len = 0, rlen = strlen(r), pos = 0;
|
65
|
-
pcre_exec(re, re_ex, src->buf, src->len, pos, 0, m, 3) >= 0;
|
66
|
-
pos = m[1]) {
|
67
|
-
clen = m[0]-pos;
|
68
|
-
dp = fb_need(dst, clen+rlen);
|
69
|
-
dst->len += clen+rlen;
|
70
|
-
memcpy(dp, src->buf+pos, clen);
|
71
|
-
memcpy(dp+clen, r, rlen);
|
72
|
-
}
|
73
|
-
clen = src->len-pos;
|
74
|
-
dp = fb_need(dst, clen);
|
75
|
-
dst->len += clen;
|
76
|
-
memcpy(dp, src->buf+pos, clen);
|
77
|
-
return dst->len;
|
78
|
-
}
|
79
|
-
|
80
|
-
/* Count all matches with pattern p in src buffer. */
|
81
|
-
static int fb_countmatches(fbuf_t *src, const char *p)
|
82
|
-
{
|
83
|
-
pcre *re;
|
84
|
-
pcre_extra *re_ex;
|
85
|
-
const char *re_e;
|
86
|
-
int re_eo, m[3], pos, count;
|
87
|
-
if (!(re = pcre_compile(p, PCRE_CASELESS, &re_e, &re_eo, NULL))) exit(1);
|
88
|
-
re_ex = pcre_study(re, 0, &re_e);
|
89
|
-
for (count = 0, pos = 0;
|
90
|
-
pcre_exec(re, re_ex, src->buf, src->len, pos, 0, m, 3) >= 0;
|
91
|
-
pos = m[1]) count++;
|
92
|
-
return count;
|
93
|
-
}
|
94
|
-
|
95
|
-
static const char *variants[] = {
|
96
|
-
"agggtaaa|tttaccct", "[cgt]gggtaaa|tttaccc[acg]",
|
97
|
-
"a[act]ggtaaa|tttacc[agt]t", "ag[act]gtaaa|tttac[agt]ct",
|
98
|
-
"agg[act]taaa|ttta[agt]cct", "aggg[acg]aaa|ttt[cgt]ccct",
|
99
|
-
"agggt[cgt]aa|tt[acg]accct", "agggta[cgt]a|t[acg]taccct",
|
100
|
-
"agggtaa[cgt]|[acg]ttaccct", NULL
|
101
|
-
};
|
102
|
-
|
103
|
-
static const char *subst[] = {
|
104
|
-
"B", "(c|g|t)", "D", "(a|g|t)", "H", "(a|c|t)", "K", "(g|t)",
|
105
|
-
"M", "(a|c)", "N", "(a|c|g|t)", "R", "(a|g)", "S", "(c|g)",
|
106
|
-
"V", "(a|c|g)", "W", "(a|t)", "Y", "(c|t)", NULL
|
107
|
-
};
|
108
|
-
|
109
|
-
int main(int argc, char **argv)
|
110
|
-
{
|
111
|
-
fbuf_t seq[2];
|
112
|
-
const char **pp;
|
113
|
-
size_t ilen, clen, slen;
|
114
|
-
int flip;
|
115
|
-
fb_init(&seq[0]);
|
116
|
-
fb_init(&seq[1]);
|
117
|
-
ilen = fb_readall(&seq[0], stdin);
|
118
|
-
clen = fb_subst(&seq[1], &seq[0], ">.*|\n", "");
|
119
|
-
for (pp = variants; *pp; pp++)
|
120
|
-
printf("%s %d\n", *pp, fb_countmatches(&seq[1], *pp));
|
121
|
-
for (slen = 0, flip = 1, pp = subst; *pp; pp += 2, flip = 1-flip)
|
122
|
-
slen = fb_subst(&seq[1-flip], &seq[flip], *pp, pp[1]);
|
123
|
-
printf("\n%zu\n%zu\n%zu\n", ilen, clen, slen);
|
124
|
-
return 0;
|
125
|
-
}
|
126
|
-
|