about summary refs log tree commit diff stats
path: root/tutorial/task9.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-10-26 22:44:17 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-10-26 23:12:17 -0700
commit5713eb7302a11af489faeb3172cc376398db57e0 (patch)
treeaa37dd2c8d926f5c932bb0b9619d12ec105823a4 /tutorial/task9.mu
parente419abe61579ecebb6055a19cec1e35e0538df9a (diff)
downloadmu-5713eb7302a11af489faeb3172cc376398db57e0.tar.gz
make room for a task before fractional numbers
Diffstat (limited to 'tutorial/task9.mu')
-rw-r--r--tutorial/task9.mu57
1 files changed, 57 insertions, 0 deletions
diff --git a/tutorial/task9.mu b/tutorial/task9.mu
new file mode 100644
index 00000000..e6bee1fa
--- /dev/null
+++ b/tutorial/task9.mu
@@ -0,0 +1,57 @@
+fn to-km miles: float -> _/xmm1: float {
+  var result/xmm1: float <- copy miles
+  # fill in the blanks to compute miles * 1.609
+
+  return result
+}
+
+fn test-to-km {
+  # 0 miles = 0 km
+  var zero: float  # Mu implicitly initializes variables in memory to 0
+  var result/xmm1: float <- to-km zero
+  compare result, zero
+  {
+    break-if-=
+    draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 0 miles = 0 km\n", 3/fg 0/bg
+    count-test-failure
+  }
+  # 1 mile = 1.609 km approximately
+  var one/eax: int <- copy 1
+  var one-float/xmm0: float <- convert one
+  result <- to-km one-float
+  var lower-bound/xmm0: float <- rational 0x649, 0x3e8  # 1609/1000 in hex
+  {
+    compare result, lower-bound
+    break-if-float>=
+    draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 1 mile > 1.609 km\n", 3/fg 0/bg
+    count-test-failure
+  }
+  var upper-bound/xmm0: float <- rational 0x64a, 0x3e8  # 1610/1000 in hex
+  {
+    compare result, upper-bound
+    break-if-float<=
+    draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 1 mile < 1.610 km\n", 3/fg 0/bg
+    count-test-failure
+  }
+  # 2 miles = 3.218 km approximately
+  var two/eax: int <- copy 2
+  var two-float/xmm0: float <- convert two
+  result <- to-km two-float
+  var lower-bound/xmm0: float <- rational 0xc92, 0x3e8  # 3218/1000 in hex
+  {
+    compare result, lower-bound
+    break-if-float>=
+    draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 2 miles > 3.218 km\n", 3/fg 0/bg
+    count-test-failure
+  }
+  var upper-bound/xmm0: float <- rational 0xc93, 0x3e8  # 3219/1000 in hex
+  {
+    compare result, upper-bound
+    break-if-float<=
+    draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 2 miles < 3.219 km\n", 3/fg 0/bg
+    count-test-failure
+  }
+}
+
+fn main {
+}
oth <boothj5@gmail.com> 2012-06-18 22:16:57 +0100 committer James Booth <boothj5@gmail.com> 2012-06-18 22:16:57 +0100 Load colours from preferences' href='/danisanti/profani-tty/commit/preferences.h?id=028a2da3f6594dd7883a18136f216ddf83470f84'>028a2da3 ^
6d5d41b3 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53