26#if defined (HAVE_CONFIG_H)
55 uint64_t q = modulus / a;
56 uint64_t r = modulus - q * a;
57 uint64_t term1 = a * (b % q);
58 uint64_t term2 = (r < q) ? r * (b / q) :
safemultiply (r, b / q, modulus);
59 return (term1 > term2) ? (term1 - term2) : (term1 + modulus - term2);
84 if (
x == 1 ||
x == n-1)
87 for (uint64_t j = 1; j < r; j++)
155DEFUN (__isprimelarge__, args, ,
165 int nargin = args.length ();
173 (
"__isprimelarge__: unable to convert input. Call isprime() instead.");
bool isprimescalar(uint64_t n)
bool millerrabin(uint64_t div, uint64_t d, uint64_t r, uint64_t n)
OCTAVE_NAMESPACE_BEGIN uint64_t safemultiply(uint64_t a, uint64_t b, uint64_t modulus)
uint64_t safepower(uint64_t a, uint64_t b, uint64_t modulus)
octave_idx_type numel(void) const
Number of elements in the array.
const dim_vector & dims(void) const
Return a const-reference so that dims ()(i) works efficiently.
OCTINTERP_API void print_usage(void)
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
F77_RET_T const F77_DBLE * x
octave_value_list ovl(const OV_Args &... args)
Construct an octave_value_list with less typing.