redshift 1.3.24 → 1.3.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +49 -0
  3. data/RELEASE-NOTES +34 -3
  4. data/Rakefile +81 -0
  5. data/bench/bench +1 -1
  6. data/bench/formula.rb +2 -3
  7. data/examples/pid.rb +6 -6
  8. data/examples/robots/lib/shell-world.rb +1 -1
  9. data/examples/scheduler.rb +6 -1
  10. data/ext/redshift/dvector-float/dvector-float.c +184 -0
  11. data/ext/redshift/dvector-float/dvector-float.h +36 -0
  12. data/ext/redshift/dvector-float/dvector-float.rb +33 -0
  13. data/ext/redshift/dvector-float/extconf.rb +2 -0
  14. data/lib/redshift/redshift.rb +5 -5
  15. data/lib/redshift/target/c/component-gen.rb +1 -1
  16. data/lib/redshift/target/c/flow-gen.rb +1 -1
  17. data/lib/redshift/target/c/flow/delay.rb +1 -1
  18. data/lib/redshift/target/c/world-gen.rb +101 -101
  19. data/lib/redshift/util/isaac.rb +2 -2
  20. data/lib/redshift/util/tkar-driver.rb +1 -1
  21. data/test/test.rb +1 -1
  22. data/test/test_buffer.rb +2 -2
  23. data/test/test_connect.rb +2 -2
  24. data/test/test_connect_parallel.rb +2 -2
  25. data/test/test_connect_strict.rb +4 -5
  26. data/test/test_constant.rb +2 -4
  27. data/test/test_delay.rb +2 -2
  28. data/test/test_derivative.rb +2 -2
  29. data/test/test_discrete.rb +2 -4
  30. data/test/test_discrete_isolated.rb +2 -4
  31. data/test/test_dvector-float.rb +110 -0
  32. data/test/test_dvector.rb +15 -17
  33. data/test/test_exit.rb +2 -4
  34. data/test/test_flow.rb +2 -4
  35. data/test/test_flow_link.rb +2 -4
  36. data/test/test_flow_sub.rb +2 -4
  37. data/test/test_flow_trans.rb +23 -25
  38. data/test/test_inherit.rb +2 -4
  39. data/test/test_inherit_event.rb +2 -4
  40. data/test/test_inherit_flow.rb +2 -4
  41. data/test/test_inherit_link.rb +2 -4
  42. data/test/test_inherit_setup.rb +2 -4
  43. data/test/test_inherit_state.rb +2 -4
  44. data/test/test_inherit_transition.rb +2 -4
  45. data/test/test_numerics.rb +2 -4
  46. data/test/test_queue.rb +3 -3
  47. data/test/test_queue_alone.rb +2 -2
  48. data/test/test_reset.rb +2 -4
  49. data/test/test_setup.rb +2 -4
  50. data/test/test_strict_continuity.rb +2 -4
  51. data/test/test_strict_reset_error.rb +2 -4
  52. data/test/test_strictness_error.rb +2 -4
  53. data/test/test_sync.rb +2 -2
  54. data/test/test_world.rb +2 -4
  55. metadata +80 -106
  56. data/.bnsignore +0 -27
  57. data/.gitignore +0 -9
  58. data/README +0 -25
  59. data/TODO +0 -431
  60. data/bench/aug17-ruby19.bench +0 -86
  61. data/bench/aug17.bench +0 -86
  62. data/bench/aug7.bench +0 -86
  63. data/bench/prof.html +0 -0
  64. data/examples/robots/README +0 -49
  65. data/ext/redshift/util/isaac/extconf.rb +0 -2
  66. data/ext/redshift/util/isaac/isaac.c +0 -129
  67. data/ext/redshift/util/isaac/rand.c +0 -140
  68. data/ext/redshift/util/isaac/rand.h +0 -61
  69. data/rakefile +0 -50
@@ -1,140 +0,0 @@
1
- /*
2
- ------------------------------------------------------------------------------
3
- rand.c: By Bob Jenkins. My random number generator, ISAAC. Public Domain.
4
- MODIFIED:
5
- 960327: Creation (addition of randinit, really)
6
- 970719: use context, not global variables, for internal state
7
- 980324: added main (ifdef'ed out), also rearranged randinit()
8
- 010626: Note that this is public domain
9
-
10
- ADAPTED Aug2004 for use in Ruby by Joel VanderWerf
11
- ADAPTED Jan2010 for 64 bit systems (same algorithm and results as 32 bit)
12
- ADAPTED Jun2010 for use within the redshift project
13
- ------------------------------------------------------------------------------
14
- */
15
- #ifndef RAND
16
- #include "rand.h"
17
- #endif
18
-
19
-
20
- #define ind(mm,x) ((mm)[(x>>2)&(RANDSIZ-1)])
21
- #define rngstep(mix,a,b,mm,m,m2,r,x) \
22
- { \
23
- x = *m; \
24
- a = ((a^(mix)) + *(m2++)); \
25
- *(m++) = y = (ind(mm,x) + a + b); \
26
- *(r++) = b = (ind(mm,y>>RANDSIZL) + x); \
27
- }
28
-
29
- void rs_isaac_rand(ctx)
30
- randctx *ctx;
31
- {
32
- register ub4 a,b,x,y,*m,*mm,*m2,*r,*mend;
33
- mm=ctx->randmem; r=ctx->randrsl;
34
- a = ctx->randa; b = (ctx->randb + (++ctx->randc));
35
- for (m = mm, mend = m2 = m+(RANDSIZ/2); m<mend; )
36
- {
37
- rngstep( a<<13, a, b, mm, m, m2, r, x);
38
- rngstep( a>>6 , a, b, mm, m, m2, r, x);
39
- rngstep( a<<2 , a, b, mm, m, m2, r, x);
40
- rngstep( a>>16, a, b, mm, m, m2, r, x);
41
- }
42
- for (m2 = mm; m2<mend; )
43
- {
44
- rngstep( a<<13, a, b, mm, m, m2, r, x);
45
- rngstep( a>>6 , a, b, mm, m, m2, r, x);
46
- rngstep( a<<2 , a, b, mm, m, m2, r, x);
47
- rngstep( a>>16, a, b, mm, m, m2, r, x);
48
- }
49
- ctx->randb = b; ctx->randa = a;
50
- }
51
-
52
-
53
- #define mix(a,b,c,d,e,f,g,h) \
54
- { \
55
- a^=b<<11; d+=a; b+=c; \
56
- b^=c>>2; e+=b; c+=d; \
57
- c^=d<<8; f+=c; d+=e; \
58
- d^=e>>16; g+=d; e+=f; \
59
- e^=f<<10; h+=e; f+=g; \
60
- f^=g>>4; a+=f; g+=h; \
61
- g^=h<<8; b+=g; h+=a; \
62
- h^=a>>9; c+=h; a+=b; \
63
- }
64
-
65
- /* if (flag==TRUE), then use the contents of randrsl[] to initialize mm[]. */
66
- void rs_isaac_init(ctx, flag)
67
- randctx *ctx;
68
- int flag;
69
- {
70
- int i;
71
- ub4 a,b,c,d,e,f,g,h;
72
- ub4 *m,*r;
73
- ctx->randa = ctx->randb = ctx->randc = 0;
74
- m=ctx->randmem;
75
- r=ctx->randrsl;
76
- a=b=c=d=e=f=g=h=0x9e3779b9; /* the golden ratio */
77
-
78
- for (i=0; i<4; ++i) /* scramble it */
79
- {
80
- mix(a,b,c,d,e,f,g,h);
81
- }
82
-
83
- if (flag)
84
- {
85
- /* initialize using the contents of r[] as the seed */
86
- for (i=0; i<RANDSIZ; i+=8)
87
- {
88
- a+=r[i ]; b+=r[i+1]; c+=r[i+2]; d+=r[i+3];
89
- e+=r[i+4]; f+=r[i+5]; g+=r[i+6]; h+=r[i+7];
90
- mix(a,b,c,d,e,f,g,h);
91
- m[i ]=a; m[i+1]=b; m[i+2]=c; m[i+3]=d;
92
- m[i+4]=e; m[i+5]=f; m[i+6]=g; m[i+7]=h;
93
- }
94
- /* do a second pass to make all of the seed affect all of m */
95
- for (i=0; i<RANDSIZ; i+=8)
96
- {
97
- a+=m[i ]; b+=m[i+1]; c+=m[i+2]; d+=m[i+3];
98
- e+=m[i+4]; f+=m[i+5]; g+=m[i+6]; h+=m[i+7];
99
- mix(a,b,c,d,e,f,g,h);
100
- m[i ]=a; m[i+1]=b; m[i+2]=c; m[i+3]=d;
101
- m[i+4]=e; m[i+5]=f; m[i+6]=g; m[i+7]=h;
102
- }
103
- }
104
- else
105
- {
106
- /* fill in mm[] with messy stuff */
107
- for (i=0; i<RANDSIZ; i+=8)
108
- {
109
- mix(a,b,c,d,e,f,g,h);
110
- m[i ]=a; m[i+1]=b; m[i+2]=c; m[i+3]=d;
111
- m[i+4]=e; m[i+5]=f; m[i+6]=g; m[i+7]=h;
112
- }
113
- }
114
-
115
- rs_isaac_rand(ctx); /* fill in the first set of results */
116
- ctx->randcnt=RANDSIZ; /* prepare to use the first set of results */
117
- }
118
-
119
-
120
- #ifdef NEVER
121
- #include <stdio.h>
122
-
123
- int main()
124
- {
125
- ub4 i,j;
126
- randctx ctx;
127
- ctx.randa=ctx.randb=ctx.randc=(ub4)0;
128
- for (i=0; i<RANDSIZ; ++i) ctx.randrsl[i]=(ub4)0;
129
- rs_isaac_init(&ctx, 1);
130
- for (i=0; i<2; ++i)
131
- {
132
- rs_isaac_rand(&ctx);
133
- for (j=0; j<RANDSIZ; ++j)
134
- {
135
- printf("%.8lx",(long unsigned int)ctx.randrsl[j]);
136
- if ((j&7)==7) printf("\n");
137
- }
138
- }
139
- }
140
- #endif
@@ -1,61 +0,0 @@
1
- /*
2
- ------------------------------------------------------------------------------
3
- rand.h: definitions for a random number generator
4
- By Bob Jenkins, 1996, Public Domain
5
- MODIFIED:
6
- 960327: Creation (addition of randinit, really)
7
- 970719: use context, not global variables, for internal state
8
- 980324: renamed seed to flag
9
- 980605: recommend RANDSIZL=4 for noncryptography.
10
- 010626: note this is public domain
11
-
12
- ADAPTED Aug2004 for use in Ruby by Joel VanderWerf
13
- ADAPTED Jan2010 for 64 bit systems (same algorithm and results as 32 bit)
14
- ADAPTED Jun2010 for use within the redshift project
15
- ------------------------------------------------------------------------------
16
- */
17
-
18
- #include <stdint.h>
19
-
20
- typedef uint32_t ub4;
21
-
22
- #ifndef RAND
23
- #define RAND
24
- #define RANDSIZL (8) /* I recommend 8 for crypto, 4 for simulations */
25
- #define RANDSIZ (1<<RANDSIZL)
26
-
27
- /* context of random number generator */
28
- struct randctx
29
- {
30
- ub4 randcnt;
31
- ub4 randrsl[RANDSIZ];
32
- ub4 randmem[RANDSIZ];
33
- ub4 randa;
34
- ub4 randb;
35
- ub4 randc;
36
- };
37
- typedef struct randctx randctx;
38
-
39
- /*
40
- ------------------------------------------------------------------------------
41
- If (flag==TRUE), then use the contents of randrsl[0..RANDSIZ-1] as the seed.
42
- ------------------------------------------------------------------------------
43
- */
44
- void rs_isaac_init(randctx *r, int flag);
45
-
46
- void rs_isaac_rand(randctx *r);
47
-
48
-
49
- /*
50
- ------------------------------------------------------------------------------
51
- Call rand(/o_ randctx *r _o/) to retrieve a single 32-bit random value
52
- ------------------------------------------------------------------------------
53
- */
54
- #define rand(r) \
55
- (!(r)->randcnt-- ? \
56
- (rs_isaac_rand(r), (r)->randcnt=RANDSIZ-1, (r)->randrsl[(r)->randcnt]) : \
57
- (r)->randrsl[(r)->randcnt])
58
-
59
- #endif /* RAND */
60
-
61
-
data/rakefile DELETED
@@ -1,50 +0,0 @@
1
- begin
2
- require 'bones'
3
- rescue LoadError
4
- abort '### please install the bones gem ###'
5
- end
6
-
7
- ensure_in_path 'lib'
8
- require 'redshift'
9
-
10
- Bones {
11
- name 'redshift'
12
- authors 'Joel VanderWerf'
13
- email 'vjoel@users.sourceforge.net'
14
- url 'http://rubyforge.org/projects/redshift'
15
- rubyforge.name 'redshift'
16
- version RedShift::VERSION
17
- readme_file 'README'
18
-
19
- summary 'Simulation of hybrid automata'
20
- description <<END
21
- A framework for simulation of networks of hybrid automata, similar to SHIFT and Lambda-SHIFT. Includes ruby-based DSL for defining simulation components, and ruby/C code generation and runtime.
22
- END
23
-
24
- depend_on 'cgen'
25
- depend_on 'tkar'
26
-
27
- history_file 'RELEASE-NOTES'
28
- changes File.read(history_file)[/^\w.*?(?=^\w)/m]
29
- rdoc.dir "rdoc" ## Note: doc dir has original content files
30
- rdoc.include ["README", "RELEASE-NOTES", "ext", "lib"]
31
- rdoc.exclude ["examples", "test", "bench"]
32
-
33
- spec.opts << '--color'
34
- test.files = [] ## Dir["test/test_*.rb"]
35
- }
36
-
37
- task 'test' do
38
- Dir.chdir 'test' do
39
- system "./test.rb"
40
- end
41
- end
42
-
43
- ENV["VERSION"] = RedShift::VERSION ## why isn't this automatic?
44
-
45
- task 'gem:release' => 'rubyforge:release' # to release to rubyforge as well
46
-
47
- task :release => ["rubyforge:release", "rubyforge:doc_release"]
48
-
49
- # EOF
50
-