match (n1, n2) {
(Number::Fixnum(n1), Number::Fixnum(n2)) => {
- if n1 != 1 && n2 < -1 {
+ if !(n1 == 1 || n1 == 0 || n1 == -1) && n2 < 0 {
let n = Number::from(n1);
let stub = MachineError::functor_stub(clause_name!("^"), 2);
}
}
(Number::Fixnum(n1), Number::Integer(n2)) => {
- if n1 != 1 && &*n2 < &-1 {
+ if (n1 == 1 || n1 == 0 || n1 == -1) && &*n2 < &0 {
let n = Number::from(n1);
let stub = MachineError::functor_stub(clause_name!("^"), 2);
}
}
(Number::Integer(n1), Number::Fixnum(n2)) => {
- if &*n1 != &1 && n2 < -1 {
+ if !(&*n1 == &1 || &*n1 == &0 || &*n1 == &-1) && n2 < 0 {
let n = Number::Integer(n1);
let stub = MachineError::functor_stub(clause_name!("^"), 2);
}
}
(Number::Integer(n1), Number::Integer(n2)) => {
- if &*n1 != &1 && &*n2 < &-1 {
+ if !(&*n1 == &1 || &*n1 == &0 || &*n1 == &-1) && &*n2 < &0 {
let n = Number::Integer(n1);
let stub = MachineError::functor_stub(clause_name!("^"), 2);