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