From e095de4ec2ed968c3fc3bcac0376336890ab1c1c Mon Sep 17 00:00:00 2001 From: Moritz Lenz Date: Sat, 22 Sep 2012 08:56:50 +0200 Subject: [PATCH] sub forms of is-prime and expmod --- docs/ChangeLog | 2 +- src/core/Int.pm | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/ChangeLog b/docs/ChangeLog index 3cce5467580..d7f4cd2e96b 100644 --- a/docs/ChangeLog +++ b/docs/ChangeLog @@ -1,6 +1,6 @@ New in 2012.10 -+ Int.is-prime and Int.expmod ++ is-prime and expmod New in 2012.09 + class Iterable does not inherit from class Cool anymore diff --git a/src/core/Int.pm b/src/core/Int.pm index eec8c07b04c..b0fd9217524 100644 --- a/src/core/Int.pm +++ b/src/core/Int.pm @@ -245,3 +245,18 @@ multi sub chr(Cool \x) returns Str:D { x.Int.chr } multi sub chr(int $x) returns str { nqp::chr($x); } + +proto sub is-prime($, $?) {*} +multi sub is-prime(Int:D \i, Int:D $tries = 100) { + nqp::p6bool(nqp::isprime_I(nqp::p6decont(i), nqp::unbox_i($tries))); +} +multi sub is-prime(\i, $tries = 100) { + nqp::p6bool(nqp::isprime_I(nqp::p6decont(i.Int), nqp::unbox_i($tries.Int))); +} +proto sub expmod($, $, $) {*} +multi sub expmod(Int:D \base, Int:D \exp, Int:D \mod) { + nqp::expmod_I(nqp::p6decont(base), nqp::p6decont(exp), nqp::p6decont(mod), Int); +} +multi sub expmod(\base, \exp, \mod) { + nqp::expmod_I(nqp::p6decont(base.Int), nqp::p6decont(exp.Int), nqp::p6decont(mod.Int), Int); +}