From: "MartinBosslet (Martin Bosslet)" Date: 2012-04-28T09:32:23+09:00 Subject: [ruby-core:44712] [ruby-trunk - Feature #6362] Modular exponentiation/inverse Issue #6362 has been updated by MartinBosslet (Martin Bosslet). mame (Yusuke Endoh) wrote: > Personally I like this proposal, but it seems to require: > > - use cases (Well, personally I often use them for Project Euler :-) It would be incredibly helpful when implementing cryptographic primitives. Apart from mathematics in general (and Project Euler in particular!) I have little experience with other areas where it would be equally useful. One could argue this should be in a gem, but since we already have excellent Bignum support, I'd enjoy to see it even more excellent :) > - candidates of method name (pow_mod / inv_mod?) Yes, I thought of them as well. If there would be no complaints... > - other kinds of modular arithmetic are not needed? (add_mod, mul_mod, sqrt_mod, ...) Seems the right thing to do. GCD, modular shifts, etc. as well. I'll explore what others like GMP or OpenSSL support and start from there. > - a detailed spec (especially corner cases, e.g., not coprime case, negative modulo, etc.) Based on what I find out, I'll try to design an interface plus specs. Another question is what particular algorithms to use for implementing each aspect. I'm currently catching up on literature, although I'd be happy about suggestions, of course! > - a patch Will do once there is a consensus on the specs! -Martin ---------------------------------------- Feature #6362: Modular exponentiation/inverse https://bugs.ruby-lang.org/issues/6362#change-26273 Author: MartinBosslet (Martin Bosslet) Status: Feedback Priority: Normal Assignee: MartinBosslet (Martin Bosslet) Category: core Target version: I'd like to ask your opinion about adding two methods for modular exponentiation/modular inverse to integer classes. Is this functionality too specific or would this be a welcome addition? -- http://bugs.ruby-lang.org/