comparison libinterp/corefcn/__isprimelarge__.cc @ 31607:aac27ad79be6 stable

maint: Re-indent code after switch to using namespace macros. * build-env.h, build-env.in.cc, Cell.h, __betainc__.cc, __eigs__.cc, __ftp__.cc, __ichol__.cc, __ilu__.cc, __isprimelarge__.cc, __magick_read__.cc, __pchip_deriv__.cc, amd.cc, base-text-renderer.cc, base-text-renderer.h, besselj.cc, bitfcns.cc, bsxfun.cc, c-file-ptr-stream.h, call-stack.cc, call-stack.h, ccolamd.cc, cellfun.cc, chol.cc, colamd.cc, dasrt.cc, data.cc, debug.cc, defaults.cc, defaults.h, det.cc, display.cc, display.h, dlmread.cc, dynamic-ld.cc, dynamic-ld.h, ellipj.cc, environment.cc, environment.h, error.cc, error.h, errwarn.h, event-manager.cc, event-manager.h, event-queue.cc, event-queue.h, fcn-info.cc, fcn-info.h, fft.cc, fft2.cc, file-io.cc, filter.cc, find.cc, ft-text-renderer.cc, ft-text-renderer.h, gcd.cc, gl-render.cc, gl-render.h, gl2ps-print.cc, gl2ps-print.h, graphics-toolkit.cc, graphics-toolkit.h, graphics.cc, gsvd.cc, gtk-manager.cc, gtk-manager.h, help.cc, help.h, hook-fcn.cc, hook-fcn.h, input.cc, input.h, interpreter-private.cc, interpreter-private.h, interpreter.cc, interpreter.h, inv.cc, jsondecode.cc, jsonencode.cc, latex-text-renderer.cc, latex-text-renderer.h, load-path.cc, load-path.h, load-save.cc, load-save.h, lookup.cc, ls-hdf5.cc, ls-mat4.cc, ls-mat5.cc, lsode.cc, lu.cc, mappers.cc, matrix_type.cc, max.cc, mex.cc, mexproto.h, mxarray.h, mxtypes.in.h, oct-errno.in.cc, oct-hdf5-types.cc, oct-hist.cc, oct-hist.h, oct-map.cc, oct-map.h, oct-opengl.h, oct-prcstrm.h, oct-process.cc, oct-process.h, oct-stdstrm.h, oct-stream.cc, oct-stream.h, oct-strstrm.h, octave-default-image.h, ordqz.cc, ordschur.cc, pager.cc, pager.h, pinv.cc, pow2.cc, pr-output.cc, psi.cc, qr.cc, quadcc.cc, rand.cc, regexp.cc, settings.cc, settings.h, sighandlers.cc, sighandlers.h, sparse-xpow.cc, sqrtm.cc, stack-frame.cc, stack-frame.h, stream-euler.cc, strfns.cc, svd.cc, syminfo.cc, syminfo.h, symrcm.cc, symrec.cc, symrec.h, symscope.cc, symscope.h, symtab.cc, symtab.h, sysdep.cc, sysdep.h, text-engine.cc, text-engine.h, text-renderer.cc, text-renderer.h, time.cc, toplev.cc, typecast.cc, url-handle-manager.cc, url-handle-manager.h, urlwrite.cc, utils.cc, utils.h, variables.cc, variables.h, xdiv.cc, __delaunayn__.cc, __init_fltk__.cc, __init_gnuplot__.cc, __ode15__.cc, __voronoi__.cc, audioread.cc, convhulln.cc, gzip.cc, cdef-class.cc, cdef-class.h, cdef-fwd.h, cdef-manager.cc, cdef-manager.h, cdef-method.cc, cdef-method.h, cdef-object.cc, cdef-object.h, cdef-package.cc, cdef-package.h, cdef-property.cc, cdef-property.h, cdef-utils.cc, cdef-utils.h, ov-base-diag.cc, ov-base-int.cc, ov-base-mat.cc, ov-base-mat.h, ov-base-scalar.cc, ov-base.cc, ov-base.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool.cc, ov-builtin.h, ov-cell.cc, ov-ch-mat.cc, ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h, ov-complex.cc, ov-cx-diag.cc, ov-cx-mat.cc, ov-cx-sparse.cc, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn.h, ov-float.cc, ov-flt-complex.cc, ov-flt-cx-diag.cc, ov-flt-cx-mat.cc, ov-flt-re-diag.cc, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-intx.h, ov-java.cc, ov-lazy-idx.cc, ov-legacy-range.cc, ov-magic-int.cc, ov-mex-fcn.cc, ov-mex-fcn.h, ov-null-mat.cc, ov-perm.cc, ov-range.cc, ov-re-diag.cc, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-scalar.cc, ov-str-mat.cc, ov-struct.cc, ov-typeinfo.cc, ov-typeinfo.h, ov-usr-fcn.cc, ov-usr-fcn.h, ov.cc, ov.h, ovl.h, octave.cc, octave.h, op-b-sbm.cc, op-bm-sbm.cc, op-cs-scm.cc, op-fm-fcm.cc, op-fs-fcm.cc, op-s-scm.cc, op-scm-cs.cc, op-scm-s.cc, op-sm-cs.cc, ops.h, anon-fcn-validator.cc, anon-fcn-validator.h, bp-table.cc, bp-table.h, comment-list.cc, comment-list.h, filepos.h, lex.h, oct-lvalue.cc, oct-lvalue.h, parse.h, profiler.cc, profiler.h, pt-anon-scopes.cc, pt-anon-scopes.h, pt-arg-list.cc, pt-arg-list.h, pt-args-block.cc, pt-args-block.h, pt-array-list.cc, pt-array-list.h, pt-assign.cc, pt-assign.h, pt-binop.cc, pt-binop.h, pt-bp.cc, pt-bp.h, pt-cbinop.cc, pt-cbinop.h, pt-cell.cc, pt-cell.h, pt-check.cc, pt-check.h, pt-classdef.cc, pt-classdef.h, pt-cmd.h, pt-colon.cc, pt-colon.h, pt-const.cc, pt-const.h, pt-decl.cc, pt-decl.h, pt-eval.cc, pt-eval.h, pt-except.cc, pt-except.h, pt-exp.cc, pt-exp.h, pt-fcn-handle.cc, pt-fcn-handle.h, pt-id.cc, pt-id.h, pt-idx.cc, pt-idx.h, pt-jump.h, pt-loop.cc, pt-loop.h, pt-mat.cc, pt-mat.h, pt-misc.cc, pt-misc.h, pt-pr-code.cc, pt-pr-code.h, pt-select.cc, pt-select.h, pt-spmd.cc, pt-spmd.h, pt-stmt.cc, pt-stmt.h, pt-tm-const.cc, pt-tm-const.h, pt-unop.cc, pt-unop.h, pt-walk.cc, pt-walk.h, pt.cc, pt.h, token.cc, token.h, Range.cc, Range.h, idx-vector.cc, idx-vector.h, range-fwd.h, CollocWt.cc, CollocWt.h, aepbalance.cc, aepbalance.h, chol.cc, chol.h, gepbalance.cc, gepbalance.h, gsvd.cc, gsvd.h, hess.cc, hess.h, lo-mappers.cc, lo-mappers.h, lo-specfun.cc, lo-specfun.h, lu.cc, lu.h, oct-convn.cc, oct-convn.h, oct-fftw.cc, oct-fftw.h, oct-norm.cc, oct-norm.h, oct-rand.cc, oct-rand.h, oct-spparms.cc, oct-spparms.h, qr.cc, qr.h, qrp.cc, qrp.h, randgamma.cc, randgamma.h, randmtzig.cc, randmtzig.h, randpoisson.cc, randpoisson.h, schur.cc, schur.h, sparse-chol.cc, sparse-chol.h, sparse-lu.cc, sparse-lu.h, sparse-qr.cc, sparse-qr.h, svd.cc, svd.h, child-list.cc, child-list.h, dir-ops.cc, dir-ops.h, file-ops.cc, file-ops.h, file-stat.cc, file-stat.h, lo-sysdep.cc, lo-sysdep.h, lo-sysinfo.cc, lo-sysinfo.h, mach-info.cc, mach-info.h, oct-env.cc, oct-env.h, oct-group.cc, oct-group.h, oct-password.cc, oct-password.h, oct-syscalls.cc, oct-syscalls.h, oct-time.cc, oct-time.h, oct-uname.cc, oct-uname.h, action-container.cc, action-container.h, base-list.h, cmd-edit.cc, cmd-edit.h, cmd-hist.cc, cmd-hist.h, f77-fcn.h, file-info.cc, file-info.h, lo-array-errwarn.cc, lo-array-errwarn.h, lo-hash.cc, lo-hash.h, lo-ieee.h, lo-regexp.cc, lo-regexp.h, lo-utils.cc, lo-utils.h, oct-base64.cc, oct-base64.h, oct-glob.cc, oct-glob.h, oct-inttypes.h, oct-mutex.cc, oct-mutex.h, oct-refcount.h, oct-shlib.cc, oct-shlib.h, oct-sparse.cc, oct-sparse.h, oct-string.h, octave-preserve-stream-state.h, pathsearch.cc, pathsearch.h, quit.cc, quit.h, unwind-prot.cc, unwind-prot.h, url-transfer.cc, url-transfer.h: Re-indent code after switch to using namespace macros.
author Rik <rik@octave.org>
date Thu, 01 Dec 2022 18:02:15 -0800
parents e88a07dec498
children 597f3ee61a48
comparison
equal deleted inserted replaced
31605:e88a07dec498 31607:aac27ad79be6
115 // Miller-Rabin test with the first 12 primes. 115 // Miller-Rabin test with the first 12 primes.
116 // If the number passes all 12 tests, then it is prime. 116 // If the number passes all 12 tests, then it is prime.
117 // If it fails any, then it is composite. 117 // If it fails any, then it is composite.
118 // The first 12 primes suffice to test all 64-bit integers. 118 // The first 12 primes suffice to test all 64-bit integers.
119 return millerrabin ( 2, d, r, n) && millerrabin ( 3, d, r, n) 119 return millerrabin ( 2, d, r, n) && millerrabin ( 3, d, r, n)
120 && millerrabin ( 5, d, r, n) && millerrabin ( 7, d, r, n) 120 && millerrabin ( 5, d, r, n) && millerrabin ( 7, d, r, n)
121 && millerrabin (11, d, r, n) && millerrabin (13, d, r, n) 121 && millerrabin (11, d, r, n) && millerrabin (13, d, r, n)
122 && millerrabin (17, d, r, n) && millerrabin (19, d, r, n) 122 && millerrabin (17, d, r, n) && millerrabin (19, d, r, n)
123 && millerrabin (23, d, r, n) && millerrabin (29, d, r, n) 123 && millerrabin (23, d, r, n) && millerrabin (29, d, r, n)
124 && millerrabin (31, d, r, n) && millerrabin (37, d, r, n); 124 && millerrabin (31, d, r, n) && millerrabin (37, d, r, n);
125 125
126 /* 126 /*
127 Mathematical references for the curious as to why we need only 127 Mathematical references for the curious as to why we need only
128 the 12 smallest primes for testing all 64-bit numbers: 128 the 12 smallest primes for testing all 64-bit numbers:
129 (1) https://oeis.org/A014233 129 (1) https://oeis.org/A014233
160 160
161 // This function is intended for internal use by isprime.m, 161 // This function is intended for internal use by isprime.m,
162 // so the following error handling should not be necessary. But it is 162 // so the following error handling should not be necessary. But it is
163 // probably good practice for any curious users calling it directly. 163 // probably good practice for any curious users calling it directly.
164 uint64NDArray vec = args(0).xuint64_array_value 164 uint64NDArray vec = args(0).xuint64_array_value
165 ("__isprimelarge__: unable to convert input. Call isprime() instead."); 165 ("__isprimelarge__: unable to convert input. Call isprime() instead.");
166 166
167 boolNDArray retval (vec.dims(), false); 167 boolNDArray retval (vec.dims(), false);
168 168
169 for (octave_idx_type i = vec.numel() - 1; i >= 0; i--) 169 for (octave_idx_type i = vec.numel() - 1; i >= 0; i--)
170 retval(i) = isprimescalar (vec(i)); 170 retval(i) = isprimescalar (vec(i));
203 inline 203 inline
204 uint64_t 204 uint64_t
205 localgcd (uint64_t a, uint64_t b) 205 localgcd (uint64_t a, uint64_t b)
206 { 206 {
207 return (a <= b) ? ( (b % a == 0) ? a : localgcd (a, b % a) ) 207 return (a <= b) ? ( (b % a == 0) ? a : localgcd (a, b % a) )
208 : ( (a % b == 0) ? b : localgcd (a % b, b) ); 208 : ( (a % b == 0) ? b : localgcd (a % b, b) );
209 } 209 }
210 210
211 // This function implements a textbook version of the Pollard Rho 211 // This function implements a textbook version of the Pollard Rho
212 // factorization algorithm with Brent update. 212 // factorization algorithm with Brent update.
213 // The code is short and simple, but the math behind it is complicated. 213 // The code is short and simple, but the math behind it is complicated.
261 { 261 {
262 if (args.length () != 1) 262 if (args.length () != 1)
263 print_usage (); 263 print_usage ();
264 264
265 octave_uint64 inp = args(0).xuint64_scalar_value 265 octave_uint64 inp = args(0).xuint64_scalar_value
266 ("__pollardrho__: unable to convert input. Call factor() instead."); 266 ("__pollardrho__: unable to convert input. Call factor() instead.");
267 267
268 uint64_t n = inp; 268 uint64_t n = inp;
269 octave_uint64 retval = pollardrho (n); 269 octave_uint64 retval = pollardrho (n);
270 270
271 return ovl (retval); 271 return ovl (retval);