summaryrefslogtreecommitdiff
path: root/tests/source/limitera.scade
diff options
context:
space:
mode:
Diffstat (limited to 'tests/source/limitera.scade')
-rw-r--r--tests/source/limitera.scade26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/source/limitera.scade b/tests/source/limitera.scade
new file mode 100644
index 0000000..1e4927e
--- /dev/null
+++ b/tests/source/limitera.scade
@@ -0,0 +1,26 @@
+const bound: int = 128;
+
+node limiter(x: int; d: int) returns (probe y: int)
+ var s, r: int;
+ let
+ assume in_bounded: x >= -bound and x <= bound;
+ guarantee out_bounded: y >= -bound and y <= bound;
+ s = 0 -> pre y;
+ r = x - s;
+ activate
+ if r <= -d then
+ let y = s - d; tel
+ else if r >= d then
+ let y = s + d; tel
+ else
+ let y = x; tel
+ returns y;
+ tel
+
+node test(i: int) returns(a, b, c: int; exit: bool)
+ let
+ exit = i >= 30;
+ a = (i * 21 + 122) mod (2 * bound) - bound; -- not really random
+ b = 16;
+ c = limiter(a, b);
+ tel