fix other mandelbrot variants
[mu.git] / tutorial / task10-hint1.mu
blob903284f4bc89d004ad94d0bac87614764b4443bb
1 fn to-km miles: float -> _/xmm1: float {
2   var result/xmm1: float <- copy miles
3   # fill in the blanks to compute miles * 1.609
4   # 1.609 = 1609 / 1000 (use function `rational`)
6   return result
9 fn test-to-km {
10   # 0 miles = 0 km
11   var zero: float  # Mu implicitly initializes variables in memory to 0
12   var result/xmm1: float <- to-km zero
13   compare result, zero
14   {
15     break-if-=
16     draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 0 miles = 0 km\n", 3/fg 0/bg
17     count-test-failure
18   }
19   # 1 mile = 1.609 km approximately
20   var one/eax: int <- copy 1
21   var one-float/xmm0: float <- convert one
22   result <- to-km one-float
23   var lower-bound/xmm0: float <- rational 0x649, 0x3e8  # 1609/1000 in hex
24   {
25     compare result, lower-bound
26     break-if-float>=
27     draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 1 mile > 1.609 km\n", 3/fg 0/bg
28     count-test-failure
29   }
30   var upper-bound/xmm0: float <- rational 0x64a, 0x3e8  # 1610/1000 in hex
31   {
32     compare result, upper-bound
33     break-if-float<=
34     draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 1 mile < 1.610 km\n", 3/fg 0/bg
35     count-test-failure
36   }
37   # 2 miles = 3.218 km approximately
38   var two/eax: int <- copy 2
39   var two-float/xmm0: float <- convert two
40   result <- to-km two-float
41   var lower-bound/xmm0: float <- rational 0xc92, 0x3e8  # 3218/1000 in hex
42   {
43     compare result, lower-bound
44     break-if-float>=
45     draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 2 miles > 3.218 km\n", 3/fg 0/bg
46     count-test-failure
47   }
48   var upper-bound/xmm0: float <- rational 0xc93, 0x3e8  # 3219/1000 in hex
49   {
50     compare result, upper-bound
51     break-if-float<=
52     draw-text-wrapping-right-then-down-from-cursor-over-full-screen 0/screen, "F - 2 miles < 3.219 km\n", 3/fg 0/bg
53     count-test-failure
54   }
57 fn main {