about summary refs log tree commit diff stats
path: root/409print-float.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-11-26 11:58:26 -0800
committerKartik Agaram <vc@akkartik.com>2020-11-26 12:01:25 -0800
commit7cfd2b36a19be95663af1deab5dc9da65aedef5a (patch)
tree4bf0f533d353480ceb1d70ba1343636931e11299 /409print-float.mu
parentfac93a64bdc893d347ae89c4d18ac6b15bf40e6a (diff)
downloadmu-7cfd2b36a19be95663af1deab5dc9da65aedef5a.tar.gz
7277
Diffstat (limited to '409print-float.mu')
-rw-r--r--409print-float.mu139
1 files changed, 55 insertions, 84 deletions
diff --git a/409print-float.mu b/409print-float.mu
index ee6868b7..67985bb4 100644
--- a/409print-float.mu
+++ b/409print-float.mu
@@ -16,45 +16,50 @@ fn test-print-float-normal {
   var screen-on-stack: screen
   var screen/esi: (addr screen) <- address screen-on-stack
   initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  # 0.5
   var half/xmm0: float <- rational 1, 2
   print-float screen, half
-  check-screen-row screen, 1, "1.000000P-01 ", "F - test-print-float-normal"
-}
-
-fn test-print-float-normal-2 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "1.000000P-01 ", "F - test-print-float-normal 0.5"
+  # 0.25
+  clear-screen screen
   var quarter/xmm0: float <- rational 1, 4
   print-float screen, quarter
-  check-screen-row screen, 1, "1.000000P-02 ", "F - test-print-float-normal-2"
-}
-
-fn test-print-float-normal-3 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "1.000000P-02 ", "F - test-print-float-normal 0.25"
+  # 0.75
+  clear-screen screen
   var three-quarters/xmm0: float <- rational 3, 4
   print-float screen, three-quarters
-  check-screen-row screen, 1, "1.800000P-01 ", "F - test-print-float-normal-3"
-}
-
-fn test-print-float-normal-4 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "1.800000P-01 ", "F - test-print-float-normal 0.75"
+  # 0.1
+  clear-screen screen
   var tenth/xmm0: float <- rational 1, 0xa
   print-float screen, tenth
-  check-screen-row screen, 1, "1.99999aP-04 ", "F - test-print-float-normal-4"
+  check-screen-row screen, 1, "1.99999aP-04 ", "F - test-print-float-normal 0.1"
 }
 
 fn test-print-float-integer {
   var screen-on-stack: screen
   var screen/esi: (addr screen) <- address screen-on-stack
   initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  # 1
   var one-f/xmm0: float <- rational 1, 1
   print-float screen, one-f
-  check-screen-row screen, 1, "1.000000P00 ", "F - test-print-float-integer"
+  check-screen-row screen, 1, "1.000000P00 ", "F - test-print-float-integer 1"
+  # 2
+  clear-screen screen
+  var two-f/xmm0: float <- rational 2, 1
+  print-float screen, two-f
+  check-screen-row screen, 1, "1.000000P01 ", "F - test-print-float-integer 2"
+  # 10
+  clear-screen screen
+  var ten-f/xmm0: float <- rational 0xa, 1
+  print-float screen, ten-f
+  check-screen-row screen, 1, "1.400000P03 ", "F - test-print-float-integer 10"
+  # -10
+  clear-screen screen
+  var minus-ten-f/xmm0: float <- rational -0xa, 1
+  print-float screen, minus-ten-f
+  check-screen-row screen, 1, "-1.400000P03 ", "F - test-print-float-integer -10"
 }
 
 fn test-print-float-zero {
@@ -199,47 +204,30 @@ fn test-print-float-decimal-approximate-normal {
   var screen-on-stack: screen
   var screen/esi: (addr screen) <- address screen-on-stack
   initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  # 0.5
   var half/xmm0: float <- rational 1, 2
   print-float-decimal-approximate screen, half
-  check-screen-row screen, 1, "0.5 ", "F - test-print-float-decimal-approximate-normal"
-}
-
-fn test-print-float-decimal-approximate-normal-2 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "0.5 ", "F - test-print-float-decimal-approximate-normal 0.5"
+  # 0.25
+  clear-screen screen
   var quarter/xmm0: float <- rational 1, 4
   print-float-decimal-approximate screen, quarter
-  check-screen-row screen, 1, "0.25 ", "F - test-print-float-decimal-approximate-normal-2"
-}
-
-fn test-print-float-decimal-approximate-normal-3 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "0.25 ", "F - test-print-float-decimal-approximate-normal 0.25"
+  # 0.75
+  clear-screen screen
   var three-quarters/xmm0: float <- rational 3, 4
   print-float-decimal-approximate screen, three-quarters
-  check-screen-row screen, 1, "0.75 ", "F - test-print-float-decimal-approximate-normal-3"
-}
-
-# 3 decimal places = ok
-fn test-print-float-decimal-approximate-normal-4 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "0.75 ", "F - test-print-float-decimal-approximate-normal 0.75"
+  # 0.125
+  clear-screen screen
   var eighth/xmm0: float <- rational 1, 8
   print-float-decimal-approximate screen, eighth
-  check-screen-row screen, 1, "0.125 ", "F - test-print-float-decimal-approximate-normal-4"
-}
-
-# Start truncating past 3 decimal places.
-fn test-print-float-decimal-approximate-normal-5 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "0.125 ", "F - test-print-float-decimal-approximate-normal 0.1"
+  # 0.0625; start truncating past 3 decimal places
+  clear-screen screen
   var sixteenth/xmm0: float <- rational 1, 0x10
   print-float-decimal-approximate screen, sixteenth
-  check-screen-row screen, 1, "0.062 ", "F - test-print-float-decimal-approximate-normal-5"
+  check-screen-row screen, 1, "0.062 ", "F - test-print-float-decimal-approximate-normal 0.625"
 }
 
 # print whole integers without decimals
@@ -247,47 +235,30 @@ fn test-print-float-decimal-approximate-integer {
   var screen-on-stack: screen
   var screen/esi: (addr screen) <- address screen-on-stack
   initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  # 1
   var one-f/xmm0: float <- rational 1, 1
   print-float-decimal-approximate screen, one-f
-  check-screen-row screen, 1, "1 ", "F - test-print-float-decimal-approximate-integer"
-}
-
-fn test-print-float-decimal-approximate-integer-2 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "1 ", "F - test-print-float-decimal-approximate-integer 1"
+  # 2
+  clear-screen screen
   var two-f/xmm0: float <- rational 2, 1
   print-float-decimal-approximate screen, two-f
-  check-screen-row screen, 1, "2 ", "F - test-print-float-decimal-approximate-integer-2"
-}
-
-fn test-print-float-decimal-approximate-integer-3 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
-  var ten/eax: int <- copy 0xa
+  check-screen-row screen, 1, "2 ", "F - test-print-float-decimal-approximate-integer 2"
+  # 10
+  clear-screen screen
   var ten-f/xmm0: float <- rational 0xa, 1
   print-float-decimal-approximate screen, ten-f
-  check-screen-row screen, 1, "10 ", "F - test-print-float-decimal-approximate-integer-3"
-}
-
-fn test-print-float-decimal-approximate-integer-4 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "10 ", "F - test-print-float-decimal-approximate-integer 10"
+  # -10
+  clear-screen screen
   var minus-ten-f/xmm0: float <- rational -0xa, 1
   print-float-decimal-approximate screen, minus-ten-f
-  check-screen-row screen, 1, "-10 ", "F - test-print-float-decimal-approximate-integer-4"
-}
-
-fn test-print-float-decimal-approximate-integer-5 {
-  var screen-on-stack: screen
-  var screen/esi: (addr screen) <- address screen-on-stack
-  initialize-screen screen, 5, 0x20  # 32 columns should be more than enough
+  check-screen-row screen, 1, "-10 ", "F - test-print-float-decimal-approximate-integer -10"
+  # 100,000 - start using scientific notation
   var hundred-thousand/eax: int <- copy 0x186a0
   var hundred-thousand-f/xmm0: float <- convert hundred-thousand
   print-float-decimal-approximate screen, hundred-thousand-f
-  check-screen-row screen, 1, "100000 ", "F - test-print-float-decimal-approximate-integer-5"
+  check-screen-row screen, 1, "1e5 ", "F - test-print-float-decimal-approximate-integer 100,000"
 }
 
 fn test-print-float-decimal-approximate-zero {