]> Repositorios git - scryer-prolog.git/commitdiff
modify int_pow so that a power of -1 is valid (#548)
authorMark Thom <[email protected]>
Fri, 22 May 2020 04:33:22 +0000 (22:33 -0600)
committerMark Thom <[email protected]>
Fri, 22 May 2020 04:33:22 +0000 (22:33 -0600)
src/prolog/machine/arithmetic_ops.rs

index ab604e325cfb4c4f13e18856027ee6f3600a72ad..ae3e3c621082c73538ff8b4bdcb95418525090dc 100644 (file)
@@ -398,7 +398,7 @@ impl MachineState {
 
         match (n1, n2) {
             (Number::Fixnum(n1), Number::Fixnum(n2)) => {
-                if n1 != 1 && n2 < 0 {
+                if n1 != 1 && n2 < -1 {
                     let n = Number::from(n1);
                     let stub = MachineError::functor_stub(clause_name!("^"), 2);
 
@@ -424,7 +424,7 @@ impl MachineState {
                 }
             }
             (Number::Fixnum(n1), Number::Integer(n2)) => {
-                if n1 != 1 && &*n2 < &0 {
+                if n1 != 1 && &*n2 < &-1 {
                     let n = Number::from(n1);
                     let stub = MachineError::functor_stub(clause_name!("^"), 2);
 
@@ -442,7 +442,7 @@ impl MachineState {
                 }
             }
             (Number::Integer(n1), Number::Fixnum(n2)) => {
-                if &*n1 != &1 && n2 < 0 {
+                if &*n1 != &1 && n2 < -1 {
                     let n = Number::Integer(n1);
                     let stub = MachineError::functor_stub(clause_name!("^"), 2);
 
@@ -460,7 +460,7 @@ impl MachineState {
                 }
             }
             (Number::Integer(n1), Number::Integer(n2)) => {
-                if &*n1 != &1 && &*n2 < &0 {
+                if &*n1 != &1 && &*n2 < &-1 {
                     let n = Number::Integer(n1);
                     let stub = MachineError::functor_stub(clause_name!("^"), 2);