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,86 +0,0 @@
1
- alg-state:
2
- - 0 comps X 1000 steps X 0 non-alg: 0.00
3
- - 10 comps X 1000 steps X 0 non-alg: 0.00
4
- - 100 comps X 1000 steps X 0 non-alg: 0.01
5
- - 1000 comps X 1000 steps X 0 non-alg: 0.06
6
- - 10000 comps X 1000 steps X 0 non-alg: 2.79
7
- algebraic:
8
- - 1 comps X 1000000 steps: 2.10
9
- - 10 comps X 100000 steps: 0.54
10
- - 100 comps X 10000 steps: 0.47
11
- - 1000 comps X 1000 steps: 0.44
12
- - 10000 comps X 100 steps: 1.09
13
- - 100000 comps X 10 steps: 1.26
14
- connect:
15
- - 10 comps X 100000 steps: 0.30
16
- - 100 comps X 10000 steps: 0.09
17
- - 1000 comps X 1000 steps: 0.10
18
- - 10000 comps X 100 steps: 0.29
19
- - 100000 comps X 10 steps: 0.50
20
- continuous:
21
- - 1 comps X 1000000 steps: 1.91
22
- - 10 comps X 100000 steps: 0.40
23
- - 100 comps X 10000 steps: 0.31
24
- - 1000 comps X 1000 steps: 0.29
25
- - 10000 comps X 100 steps: 0.85
26
- - 100000 comps X 10 steps: 1.05
27
- discrete:
28
- - 1 comps X 1000000 steps X 0 watchers: 2.39
29
- - 10 comps X 100000 steps X 0 watchers: 0.46
30
- - 100 comps X 10000 steps X 0 watchers: 0.20
31
- - 1000 comps X 1000 steps X 0 watchers: 0.21
32
- - 10000 comps X 100 steps X 0 watchers: 0.54
33
- - 100000 comps X 10 steps X 0 watchers: 0.75
34
- - 1 comps X 1000000 steps X 1 watchers: 3.24
35
- - 10 comps X 100000 steps X 1 watchers: 0.74
36
- - 100 comps X 10000 steps X 1 watchers: 0.52
37
- - 1000 comps X 1000 steps X 1 watchers: 0.63
38
- - 10000 comps X 100 steps X 1 watchers: 2.21
39
- - 100000 comps X 10 steps X 1 watchers: 2.46
40
- - 1 comps X 200000 steps X 5 watchers: 0.73
41
- - 10 comps X 20000 steps X 5 watchers: 0.43
42
- - 100 comps X 2000 steps X 5 watchers: 0.50
43
- - 1000 comps X 200 steps X 5 watchers: 0.86
44
- - 10000 comps X 20 steps X 5 watchers: 2.06
45
- - 100000 comps X 2 steps X 5 watchers: 3.72
46
- euler:
47
- - 1 comps X 1000000 steps: 1.86
48
- - 10 comps X 100000 steps: 0.30
49
- - 100 comps X 10000 steps: 0.22
50
- - 1000 comps X 1000 steps: 0.21
51
- - 10000 comps X 100 steps: 0.77
52
- - 100000 comps X 10 steps: 0.94
53
- formula:
54
- - 1 comps X 100000 steps: 0.31
55
- - 10 comps X 10000 steps: 0.13
56
- - 100 comps X 1000 steps: 0.12
57
- - 1000 comps X 100 steps: 0.12
58
- - 10000 comps X 10 steps: 0.17
59
- half-strict:
60
- - 10 comps X 100000 steps: 3.09
61
- - 100 comps X 10000 steps: 1.23
62
- - 1000 comps X 1000 steps: 1.15
63
- - 10000 comps X 100 steps: 1.68
64
- - 100000 comps X 10 steps: 2.42
65
- inertness:
66
- - 0 comps X 10000 steps X 0 non-inert: 0.01
67
- - 1000 comps X 10000 steps X 0 non-inert: 0.43
68
- - 0 comps X 10000 steps X 1 non-inert: 0.12
69
- - 1000 comps X 10000 steps X 1 non-inert: 0.54
70
- linked-flows:
71
- - 1 comps X 1000000 steps: 2.23
72
- - 10 comps X 100000 steps: 0.61
73
- - 100 comps X 10000 steps: 0.64
74
- - 1000 comps X 1000 steps: 0.60
75
- - 10000 comps X 100 steps: 2.09
76
- - 100000 comps X 10 steps: 2.37
77
- queues:
78
- - 1 senders X 100000 steps X 1 receivers: 0.22
79
- - 10 senders X 10000 steps X 1 receivers: 0.04
80
- - 100 senders X 1000 steps X 1 receivers: 0.02
81
- - 1 senders X 10000 steps X 10 receivers: 0.03
82
- - 10 senders X 1000 steps X 10 receivers: 0.01
83
- - 100 senders X 100 steps X 10 receivers: 0.01
84
- - 1 senders X 1000 steps X 100 receivers: 0.01
85
- - 10 senders X 100 steps X 100 receivers: 0.01
86
- - 100 senders X 10 steps X 100 receivers: 0.02
data/bench/aug17.bench DELETED
@@ -1,86 +0,0 @@
1
- alg-state:
2
- - 0 comps X 1000 steps X 0 non-alg: 0.00
3
- - 10 comps X 1000 steps X 0 non-alg: 0.00
4
- - 100 comps X 1000 steps X 0 non-alg: 0.01
5
- - 1000 comps X 1000 steps X 0 non-alg: 0.08
6
- - 10000 comps X 1000 steps X 0 non-alg: 3.62
7
- algebraic:
8
- - 1 comps X 1000000 steps: 2.69
9
- - 10 comps X 100000 steps: 0.60
10
- - 100 comps X 10000 steps: 0.46
11
- - 1000 comps X 1000 steps: 0.46
12
- - 10000 comps X 100 steps: 1.30
13
- - 100000 comps X 10 steps: 1.53
14
- connect:
15
- - 10 comps X 100000 steps: 0.28
16
- - 100 comps X 10000 steps: 0.07
17
- - 1000 comps X 1000 steps: 0.10
18
- - 10000 comps X 100 steps: 0.38
19
- - 100000 comps X 10 steps: 0.89
20
- continuous:
21
- - 1 comps X 1000000 steps: 2.54
22
- - 10 comps X 100000 steps: 0.42
23
- - 100 comps X 10000 steps: 0.31
24
- - 1000 comps X 1000 steps: 0.32
25
- - 10000 comps X 100 steps: 1.05
26
- - 100000 comps X 10 steps: 1.32
27
- discrete:
28
- - 1 comps X 1000000 steps X 0 watchers: 2.49
29
- - 10 comps X 100000 steps X 0 watchers: 0.44
30
- - 100 comps X 10000 steps X 0 watchers: 0.18
31
- - 1000 comps X 1000 steps X 0 watchers: 0.20
32
- - 10000 comps X 100 steps X 0 watchers: 0.49
33
- - 100000 comps X 10 steps X 0 watchers: 0.65
34
- - 1 comps X 1000000 steps X 1 watchers: 3.95
35
- - 10 comps X 100000 steps X 1 watchers: 0.71
36
- - 100 comps X 10000 steps X 1 watchers: 0.52
37
- - 1000 comps X 1000 steps X 1 watchers: 0.64
38
- - 10000 comps X 100 steps X 1 watchers: 2.08
39
- - 100000 comps X 10 steps X 1 watchers: 2.86
40
- - 1 comps X 200000 steps X 5 watchers: 0.85
41
- - 10 comps X 20000 steps X 5 watchers: 0.43
42
- - 100 comps X 2000 steps X 5 watchers: 0.53
43
- - 1000 comps X 200 steps X 5 watchers: 0.91
44
- - 10000 comps X 20 steps X 5 watchers: 1.92
45
- - 100000 comps X 2 steps X 5 watchers: 4.60
46
- euler:
47
- - 1 comps X 1000000 steps: 2.48
48
- - 10 comps X 100000 steps: 0.34
49
- - 100 comps X 10000 steps: 0.23
50
- - 1000 comps X 1000 steps: 0.22
51
- - 10000 comps X 100 steps: 0.86
52
- - 100000 comps X 10 steps: 1.08
53
- formula:
54
- - 1 comps X 100000 steps: 0.34
55
- - 10 comps X 10000 steps: 0.15
56
- - 100 comps X 1000 steps: 0.12
57
- - 1000 comps X 100 steps: 0.12
58
- - 10000 comps X 10 steps: 0.19
59
- half-strict:
60
- - 10 comps X 100000 steps: 3.90
61
- - 100 comps X 10000 steps: 1.25
62
- - 1000 comps X 1000 steps: 1.05
63
- - 10000 comps X 100 steps: 1.85
64
- - 100000 comps X 10 steps: 3.03
65
- inertness:
66
- - 0 comps X 10000 steps X 0 non-inert: 0.03
67
- - 1000 comps X 10000 steps X 0 non-inert: 0.40
68
- - 0 comps X 10000 steps X 1 non-inert: 0.16
69
- - 1000 comps X 10000 steps X 1 non-inert: 0.46
70
- linked-flows:
71
- - 1 comps X 1000000 steps: 2.29
72
- - 10 comps X 100000 steps: 0.55
73
- - 100 comps X 10000 steps: 0.55
74
- - 1000 comps X 1000 steps: 0.49
75
- - 10000 comps X 100 steps: 2.51
76
- - 100000 comps X 10 steps: 3.10
77
- queues:
78
- - 1 senders X 100000 steps X 1 receivers: 0.26
79
- - 10 senders X 10000 steps X 1 receivers: 0.04
80
- - 100 senders X 1000 steps X 1 receivers: 0.02
81
- - 1 senders X 10000 steps X 10 receivers: 0.03
82
- - 10 senders X 1000 steps X 10 receivers: 0.01
83
- - 100 senders X 100 steps X 10 receivers: 0.02
84
- - 1 senders X 1000 steps X 100 receivers: 0.00
85
- - 10 senders X 100 steps X 100 receivers: 0.02
86
- - 100 senders X 10 steps X 100 receivers: 0.03
data/bench/aug7.bench DELETED
@@ -1,86 +0,0 @@
1
- alg-state:
2
- - 0 comps X 1000 steps X 0 non-alg: 0.01
3
- - 10 comps X 1000 steps X 0 non-alg: 0.00
4
- - 100 comps X 1000 steps X 0 non-alg: 0.02
5
- - 1000 comps X 1000 steps X 0 non-alg: 0.08
6
- - 10000 comps X 1000 steps X 0 non-alg: 3.95
7
- algebraic:
8
- - 1 comps X 1000000 steps: 2.60
9
- - 10 comps X 100000 steps: 0.62
10
- - 100 comps X 10000 steps: 0.47
11
- - 1000 comps X 1000 steps: 0.47
12
- - 10000 comps X 100 steps: 1.35
13
- - 100000 comps X 10 steps: 1.63
14
- connect:
15
- - 10 comps X 100000 steps: 0.27
16
- - 100 comps X 10000 steps: 0.07
17
- - 1000 comps X 1000 steps: 0.09
18
- - 10000 comps X 100 steps: 0.41
19
- - 100000 comps X 10 steps: 0.96
20
- continuous:
21
- - 1 comps X 1000000 steps: 2.45
22
- - 10 comps X 100000 steps: 0.44
23
- - 100 comps X 10000 steps: 0.31
24
- - 1000 comps X 1000 steps: 0.32
25
- - 10000 comps X 100 steps: 1.12
26
- - 100000 comps X 10 steps: 1.40
27
- discrete:
28
- - 1 comps X 1000000 steps X 0 watchers: 2.56
29
- - 10 comps X 100000 steps X 0 watchers: 0.41
30
- - 100 comps X 10000 steps X 0 watchers: 0.17
31
- - 1000 comps X 1000 steps X 0 watchers: 0.20
32
- - 10000 comps X 100 steps X 0 watchers: 0.54
33
- - 100000 comps X 10 steps X 0 watchers: 0.69
34
- - 1 comps X 1000000 steps X 1 watchers: 3.98
35
- - 10 comps X 100000 steps X 1 watchers: 0.73
36
- - 100 comps X 10000 steps X 1 watchers: 0.50
37
- - 1000 comps X 1000 steps X 1 watchers: 0.59
38
- - 10000 comps X 100 steps X 1 watchers: 2.23
39
- - 100000 comps X 10 steps X 1 watchers: 2.78
40
- - 1 comps X 200000 steps X 5 watchers: 0.87
41
- - 10 comps X 20000 steps X 5 watchers: 0.41
42
- - 100 comps X 2000 steps X 5 watchers: 0.50
43
- - 1000 comps X 200 steps X 5 watchers: 0.90
44
- - 10000 comps X 20 steps X 5 watchers: 2.14
45
- - 100000 comps X 2 steps X 5 watchers: 3.43
46
- euler:
47
- - 1 comps X 1000000 steps: 2.43
48
- - 10 comps X 100000 steps: 0.36
49
- - 100 comps X 10000 steps: 0.21
50
- - 1000 comps X 1000 steps: 0.23
51
- - 10000 comps X 100 steps: 0.92
52
- - 100000 comps X 10 steps: 1.17
53
- formula:
54
- - 1 comps X 100000 steps: 0.35
55
- - 10 comps X 10000 steps: 0.13
56
- - 100 comps X 1000 steps: 0.12
57
- - 1000 comps X 100 steps: 0.12
58
- - 10000 comps X 10 steps: 0.20
59
- half-strict:
60
- - 10 comps X 100000 steps: 3.93
61
- - 100 comps X 10000 steps: 1.29
62
- - 1000 comps X 1000 steps: 1.07
63
- - 10000 comps X 100 steps: 1.92
64
- - 100000 comps X 10 steps: 3.33
65
- inertness:
66
- - 0 comps X 10000 steps X 0 non-inert: 0.02
67
- - 1000 comps X 10000 steps X 0 non-inert: 0.40
68
- - 0 comps X 10000 steps X 1 non-inert: 0.17
69
- - 1000 comps X 10000 steps X 1 non-inert: 0.50
70
- linked-flows:
71
- - 1 comps X 1000000 steps: 2.73
72
- - 10 comps X 100000 steps: 0.58
73
- - 100 comps X 10000 steps: 0.56
74
- - 1000 comps X 1000 steps: 0.56
75
- - 10000 comps X 100 steps: 2.74
76
- - 100000 comps X 10 steps: 3.25
77
- queues:
78
- - 1 senders X 100000 steps X 1 receivers: 0.31
79
- - 10 senders X 10000 steps X 1 receivers: 0.06
80
- - 100 senders X 1000 steps X 1 receivers: 0.03
81
- - 1 senders X 10000 steps X 10 receivers: 0.05
82
- - 10 senders X 1000 steps X 10 receivers: 0.01
83
- - 100 senders X 100 steps X 10 receivers: 0.02
84
- - 1 senders X 1000 steps X 100 receivers: 0.01
85
- - 10 senders X 100 steps X 100 receivers: 0.02
86
- - 100 senders X 10 steps X 100 receivers: 0.03
data/bench/prof.html DELETED
File without changes
@@ -1,49 +0,0 @@
1
- = Robots
2
-
3
- An example covering some of the basic language features plus some techniques for interactive simulation and for animating simulation output.
4
-
5
- To run the example:
6
-
7
- ruby robots.rb
8
-
9
- Press ^C to break into a command shell, and then ^D to continue the simulation run. The "help" command in the shell shows you the commands beyond the basic irb.
10
-
11
- Use -h from the command line to see the switches.
12
-
13
- To change the setup of the world, edit robots.rb. You can add and move robots and missles.
14
-
15
- You can also move the objects interactively in the Tk visualization.
16
-
17
- Currently, the robots move around and the missles track and hit them.
18
-
19
- = To do
20
-
21
- == robots physics
22
-
23
- - collision detection and effect on robot health
24
-
25
- - walls and obstacles
26
-
27
- == robot control
28
-
29
- - command language to evade attackers and launch missiles based on radar
30
-
31
- - maybe similar to RoboTalk (from RoboWar)
32
-
33
- - multirobot coordination using comm channels
34
-
35
- == game mechanics
36
-
37
- - robot shop
38
-
39
- - tournaments
40
-
41
- == dev tools
42
-
43
- - debugger
44
-
45
- - plotter
46
-
47
- == visualization
48
-
49
- - for each sensor, show nearest robot by drawing arrow
@@ -1,2 +0,0 @@
1
- require 'mkmf'
2
- create_makefile 'isaac'
@@ -1,129 +0,0 @@
1
- #include "ruby.h"
2
- #include "rand.h"
3
-
4
- #ifndef min
5
- # define min(a,b) (((a)<(b)) ? (a) : (b))
6
- #endif /* min */
7
-
8
- static VALUE
9
- ISAAC_s_allocate(VALUE klass)
10
- {
11
- randctx *ctx;
12
-
13
- return Data_Make_Struct(klass, randctx, NULL, NULL, ctx);
14
- }
15
-
16
- /*
17
- * Seed the generator with an array of up to ISAAC::RANDSIZ integers in the
18
- * range 0..2**32-1. More entries are ignored. Missing entries are treated
19
- * as 0. Returns +nil+.
20
- */
21
- static VALUE
22
- ISAAC_srand(VALUE self, VALUE ary)
23
- {
24
- int i;
25
- randctx *ctx;
26
-
27
- Check_Type(ary, T_ARRAY);
28
-
29
- Data_Get_Struct(self, randctx, ctx);
30
-
31
- MEMZERO(ctx, randctx, 1);
32
- for (i=min(RANDSIZ, RARRAY_LEN(ary))-1; i>=0; i--) {
33
- ctx->randrsl[i] = NUM2UINT(RARRAY_PTR(ary)[i]);
34
- }
35
- rs_isaac_init(ctx, 1);
36
-
37
- return Qnil;
38
- }
39
-
40
- /*
41
- * Return a random integer in the range 0..2**32-1.
42
- */
43
- static VALUE
44
- ISAAC_rand32(VALUE self)
45
- {
46
- randctx *ctx;
47
-
48
- Data_Get_Struct(self, randctx, ctx);
49
-
50
- if (!ctx->randcnt--) {
51
- rs_isaac_rand(ctx);
52
- ctx->randcnt=RANDSIZ-1;
53
- }
54
-
55
- return UINT2NUM(ctx->randrsl[ctx->randcnt]);
56
- }
57
-
58
- /*
59
- * Return a random float in the range 0..1.
60
- */
61
- static VALUE
62
- ISAAC_rand(VALUE self)
63
- {
64
- randctx *ctx;
65
-
66
- Data_Get_Struct(self, randctx, ctx);
67
-
68
- if (!ctx->randcnt--) {
69
- rs_isaac_rand(ctx);
70
- ctx->randcnt=RANDSIZ-1;
71
- }
72
-
73
- return rb_float_new(ctx->randrsl[ctx->randcnt] / 4294967295.0);
74
- }
75
-
76
- /* :nodoc: */
77
- static VALUE
78
- ISAAC_marshal_dump(VALUE self)
79
- {
80
- randctx *ctx;
81
- int i;
82
- int ary_size = sizeof(randctx)/sizeof(ub4);
83
- VALUE ary;
84
-
85
- Data_Get_Struct(self, randctx, ctx);
86
-
87
- ary = rb_ary_new2(ary_size);
88
- for (i = 0; i < ary_size; i++) {
89
- rb_ary_push(ary, UINT2NUM(((ub4 *)ctx)[i]));
90
- }
91
-
92
- return ary;
93
- }
94
-
95
- /* :nodoc: */
96
- static VALUE
97
- ISAAC_marshal_load(VALUE self, VALUE ary)
98
- {
99
- randctx *ctx;
100
- int i;
101
- int ary_size = sizeof(randctx)/sizeof(ub4);
102
-
103
- Data_Get_Struct(self, randctx, ctx);
104
-
105
- if (RARRAY_LEN(ary) != ary_size)
106
- rb_raise(rb_eArgError, "bad length in loaded ISAAC data");
107
-
108
- for (i = 0; i < ary_size; i++) {
109
- ((ub4 *)ctx)[i] = NUM2UINT(RARRAY_PTR(ary)[i]);
110
- }
111
-
112
- return self;
113
- }
114
-
115
- void
116
- Init_isaac()
117
- {
118
- VALUE ISAAC;
119
-
120
- ISAAC = rb_define_class("ISAAC", rb_cObject);
121
- rb_define_alloc_func(ISAAC, ISAAC_s_allocate);
122
- rb_define_method(ISAAC, "srand", ISAAC_srand, 1);
123
- rb_define_method(ISAAC, "rand32", ISAAC_rand32, 0);
124
- rb_define_method(ISAAC, "rand", ISAAC_rand, 0);
125
- rb_define_method(ISAAC, "marshal_dump", ISAAC_marshal_dump, 0);
126
- rb_define_method(ISAAC, "marshal_load", ISAAC_marshal_load, 1);
127
-
128
- rb_const_set(ISAAC, rb_intern("RANDSIZ"), UINT2NUM(RANDSIZ));
129
- }