chiark / gitweb /
addition tests copy
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Oct 2020 19:10:25 +0000 (20:10 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Oct 2020 19:10:25 +0000 (20:10 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
extract-bf-tests
templates/bigfloat.ts

index 492f3011a3deb6e0822e397b2b67af71406af946..c13dda73334d172c7bbf4778a6687feb5cad2c82 100755 (executable)
@@ -8,9 +8,21 @@ sub chk_repr ($) {
 
 my $sre = qr{\"[^"]+\"};
 
+print <<END;
+// autogenerated from $0 @ARGV
+let mk : any;
+END
+
 while (<>) {
   next unless m/^mod test/..0;
   my $l = $_;
   $l =~ s{bf\(($sre)\)}{ chk_repr($1) }ge;
-  
+
+  if (m{^ +fn addition}..m{^ +\#\[test\]}) {
+    if (m{^ +mk\(($sre)\)}) {
+      print "mk = $1;\n";
+    } elsif (m{^ +\.chk\((\w+),\s*($sre)\)\s*$}) {
+      print "mk = Bigfloats.add(mk, $1); assert_eq(mk, $2);\n";
+    }
+  }
 }
index 790dc5dd94132325ac1d578a3333b4a92405b2b3..a9b07b56306069d1fbdde62a18673e87ad95080c 100644 (file)
@@ -146,7 +146,7 @@ namespace Bigfloats {
 
   export function add(p: Bigfloat, step: number): Bigfloat {
     let v = unpack(p);
-    add_to_limb(v, 0, step * 0x10000);
+    add_to_limb(v, v.exponent, step * 0x10000);
     return pack(v);
   }