aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--environment.c4
-rw-r--r--stdlib/integers.c4
-rw-r--r--stdlib/integers.h4
-rw-r--r--test/integers.tm4
4 files changed, 14 insertions, 2 deletions
diff --git a/environment.c b/environment.c
index 7b4bb5bf..9f230cd0 100644
--- a/environment.c
+++ b/environment.c
@@ -120,7 +120,11 @@ env_t *global_env(void)
{"parse", "Int$parse", "func(text:Text -> Int?)"},
{"plus", "Int$plus", "func(x,y:Int -> Int)"},
{"power", "Int$power", "func(base:Int,exponent:Int -> Int)"},
+#if __GNU_MP_VERSION >= 6
+#if __GNU_MP_VERSION_MINOR >= 3
{"prev_prime", "Int$prev_prime", "func(x:Int -> Int)"},
+#endif
+#endif
{"right_shifted", "Int$right_shifted", "func(x,y:Int -> Int)"},
{"sqrt", "Int$sqrt", "func(x:Int -> Int?)"},
{"times", "Int$times", "func(x,y:Int -> Int)"},
diff --git a/stdlib/integers.c b/stdlib/integers.c
index c4fcdfb5..4d5d0a80 100644
--- a/stdlib/integers.c
+++ b/stdlib/integers.c
@@ -409,6 +409,8 @@ public Int_t Int$next_prime(Int_t x)
return Int$from_mpz(p);
}
+#if __GNU_MP_VERSION >= 6
+#if __GNU_MP_VERSION_MINOR >= 3
public Int_t Int$prev_prime(Int_t x)
{
mpz_t p;
@@ -417,6 +419,8 @@ public Int_t Int$prev_prime(Int_t x)
fail("There is no prime number before %k", (Text_t[1]){Int$as_text(&x, false, &Int$info)});
return Int$from_mpz(p);
}
+#endif
+#endif
public Int_t Int$choose(Int_t n, Int_t k)
{
diff --git a/stdlib/integers.h b/stdlib/integers.h
index 3bc3abeb..e0586882 100644
--- a/stdlib/integers.h
+++ b/stdlib/integers.h
@@ -142,7 +142,11 @@ Int_t Int$slow_negative(Int_t x);
Int_t Int$slow_negated(Int_t x);
bool Int$is_prime(Int_t x, Int_t reps);
Int_t Int$next_prime(Int_t x);
+#if __GNU_MP_VERSION >= 6
+#if __GNU_MP_VERSION_MINOR >= 3
Int_t Int$prev_prime(Int_t x);
+#endif
+#endif
Int_t Int$choose(Int_t n, Int_t k);
Int_t Int$factorial(Int_t n);
diff --git a/test/integers.tm b/test/integers.tm
index e6b2ba9d..9ab0b0c2 100644
--- a/test/integers.tm
+++ b/test/integers.tm
@@ -96,8 +96,8 @@ func main():
= 2
>> 7:next_prime()
= 11
- >> 11:prev_prime()
- = 7
+ #>> 11:prev_prime()
+ #= 7
>> (and: p:is_prime() for p in [
2, 3, 5, 7,
137372146048179869781170214707,