summaryrefslogtreecommitdiff
path: root/chapter21/src
diff options
context:
space:
mode:
Diffstat (limited to 'chapter21/src')
-rw-r--r--chapter21/src/main/java/com/seaofnodes/simple/Parser.java1
-rw-r--r--chapter21/src/test/java/com/seaofnodes/simple/progs/newtonFloat.smp3
2 files changed, 3 insertions, 1 deletions
diff --git a/chapter21/src/main/java/com/seaofnodes/simple/Parser.java b/chapter21/src/main/java/com/seaofnodes/simple/Parser.java
index 092c5a9e..e1120a2f 100644
--- a/chapter21/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter21/src/main/java/com/seaofnodes/simple/Parser.java
@@ -1670,6 +1670,7 @@ public class Parser {
while( Character.isDigit(c=nextChar()) ) ;
if( !(c=='e' || c=='.') )
return --_position - old;
+ if( peek() == '-' ) nextChar();
while( Character.isDigit(c=nextChar()) || c=='e' || c=='.' ) ;
return -(--_position - old);
}
diff --git a/chapter21/src/test/java/com/seaofnodes/simple/progs/newtonFloat.smp b/chapter21/src/test/java/com/seaofnodes/simple/progs/newtonFloat.smp
index 5cb798a9..b41fc26e 100644
--- a/chapter21/src/test/java/com/seaofnodes/simple/progs/newtonFloat.smp
+++ b/chapter21/src/test/java/com/seaofnodes/simple/progs/newtonFloat.smp
@@ -1,10 +1,11 @@
// -*- mode: java; -*-
// Newtons approximation to the square root
val sqrt = { flt x ->
+ flt epsilon = 1e-57;
flt guess = x;
while( 1 ) {
flt next = (x/guess + guess)/2;
- if( next == guess ) return guess;
+ if( guess-epsilon <= next & next <= guess+epsilon ) return guess;
guess = next;
}
};