summaryrefslogtreecommitdiff
path: root/tests/source/limiter.scade
diff options
context:
space:
mode:
Diffstat (limited to 'tests/source/limiter.scade')
-rw-r--r--tests/source/limiter.scade21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/source/limiter.scade b/tests/source/limiter.scade
new file mode 100644
index 0000000..a611d98
--- /dev/null
+++ b/tests/source/limiter.scade
@@ -0,0 +1,21 @@
+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;
+ y = if r <= -d then s - d
+ else if r >= d then s + d
+ else x;
+ 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