even more complex modular exponentiation

Matthew OConnor matthew@anti-earth.org
Wed, 9 Dec 1998 23:53:32 -0500 (EST)


--8323328-1007358829-913265612=:345
Content-Type: TEXT/PLAIN; charset=US-ASCII


I wrote a script for the GIMP based on Kragen's Perl script.

As far as I can tell it does everything except that weird thing with the
colors...

(BTW if you don't know, the GIMP is the GNU Image Manipulation Program
that is available on GNU/Linux operating systems.  (I'm not sure of the
current state of the program on other OSes, you may wish to check
http://www.gimp.org if you are intrested)).

To install the script (on GNU/Linux OSes) put the script in
~/.gimp/scripts/ and then start up the GIMP.  You will find it
under Xtns/Script-Fu/Math/complex-mod-exp on the main menu
bar.

A small warning, if you enter in a base that is large and happen
to pick an element that exponentiates /many/ times before looping 
then you can have quite a wait on your hands.  Even Kragen's "mecx"
program in C takes a few minutes with the input "1 2 227".
(which runs 51528 cycles).  The way I wrote the script envolves 
plotting a pixel for every element, so in that case it would plot 51528
pixels which isn't a fast procedure :/


--
- Matthew O'Connor
- (matthew@anti-earth.org)


--8323328-1007358829-913265612=:345
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="complex-mod-exp.scm"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.981209235332.345B@prism>
Content-Description: 

OzsNCjs7IFRoaXMgaXMgYSBHSU1QIHNjcmlwdCB0ZXN0ZWQgd2l0aCAwLjk5
LjI4IG9ubHkuDQo7OyANCjs7IEl0IGRpc3BsYXlzIHRoZSBwb2ludHMgdGhh
dCB3ZXJlIHRyYXZlcnNlZCBpbiB0aGUgcHJvY2VzcyBvZiBleHBvbmVudGlh
dGluZyBhIGNvbXBsZXggaW50ZWdlciBtb2Qgbg0KOzsgSW4gdGhlIGNvbXBs
ZXgtaW50ZWdlci1wbGFuZQ0KOzsNCjs7IEJhc2VkIG9uIEtyYWdlbidzIG1v
ZC1leHAtY29tcGxleCBQZXJsIHNjcmlwdC4NCg0KKGRlZmluZSAoUmUgY251
bSkgICA7OyBSZXR1cm5zIHRoZSByZWFsIHBhcnQgb2YgYSBjb21wbGV4IG51
bQ0KICAoY2FyIGNudW0pKQ0KDQooZGVmaW5lIChJbSBjbnVtKSAgIDs7IFJl
dHVybnMgdGhlIGltYWdpbmFyeSBwYXJ0IG9mIGEgY29tcGxleCBudW0NCiAg
KGNhZHIgY251bSkpDQoNCihkZWZpbmUgKG15LW1vZCBuIG1vZCkgICA7OyBB
IHF1aWNrIGhhY2sgdG8gYWxsb3cgdGhlIG1vZHVsdXMgb2YgbmVnYXRpdmUg
bnVtYmVycyAodGhlcmUgaXMgcHJvYmFibHkgYW4gZWFzaWVyIHdheSkNCiAg
KGlmICg8IG4gMCkNCiAgICAgIChteS1tb2QgKC0gbW9kIChmbW9kIChhYnMg
bikgbW9kKSkgbW9kKSAgICAgIDs7IGZtb2QgZG9lc24ndCBoYW5kbGUgbmVn
YXRpdmVzIHZlcnkgd2VsbA0KICAgICAgKGZtb2QgbiBtb2QpKSkNCg0KKGRl
ZmluZSAoY29tcGxleC1tb2QgbW9kIGNudW0pICAgICAgICAgICAgICAgICAg
ICAgOzsgVGFrZSB0aGUgbW9kdWx1cyBvZiBhIGNvbXBsZXggbnVtYmVyIChp
ZSB0aGUgbW9kdWx1cyBvZiBpdHMgcGFydHMpDQogIChtYXAgKGxhbWJkYSAo
bikgKGFicyAobXktbW9kIG4gbW9kKSkpIGNudW0pKQ0KDQooZGVmaW5lIChj
b21wbGV4LW11bCBjbnVtMSBjbnVtMikgICAgICAgICAgICAgICAgICA7OyBN
dWx0aXBseSB0d28gY29tcGxleHMgdG9nZXRoZXINCiAgKGxpc3QgKC0gKCog
KFJlIGNudW0xKSAoUmUgY251bTIpKSAoKiAoSW0gY251bTEpIChJbSBjbnVt
MikpKSAoKyAoKiAoUmUgY251bTEpIChJbSBjbnVtMikpICgqIChSZSBjbnVt
MikgKEltIGNudW0xKSkpKSkNCg0KKGRlZmluZSAoY29tcGxleC1leHAgbW9k
IGNudW0pICAgOzsgUmV0dXJuIGEgbGlzdCBvZiB0aGUgcmVzdWx0cyBvZiBj
b250aW51YWxseSBleHBvbmVudGlhdGluZyBhIGNvbXBsZXggbnVtYmVyIG1v
ZCBuDQogIChsZXQqICgNCiAgICAgICAgIChjbnVtLWJhc2UgKGNvbXBsZXgt
bW9kIG1vZCBjbnVtKSkgICA7OyBBZGp1c3QgdGhlIGNvbXBsZXggbnVtYmVy
IHRoYXQgd2FzIHBhc3NlZCBpbiBzdWNoIHRoYXQgaXQgaXMgYSAidmFsaWQi
IGNvb3JkaW5hdGUNCiAgICAgICAgIChjdXJyZW50LWNudW0gY251bS1iYXNl
KSAgICAgICAgICAgICANCiAgICAgICAgIChhbHJlYWR5LXBsb3R0ZWQgJygp
KQ0KICAgICAgICApDQoNCiAgICAgICAgKHdoaWxlIChudWxsPyAobWVtYmVy
IGN1cnJlbnQtY251bSBhbHJlYWR5LXBsb3R0ZWQpKSAgICAgICAgICAgICAg
ICAgOzsgSSB0aGluayB0aGlzIHNsb3dzIHRoZSBzY3JpcHQgZG93bi4NCiAg
ICAgICAgICAgKHNldCEgYWxyZWFkeS1wbG90dGVkIChjb25zIGN1cnJlbnQt
Y251bSBhbHJlYWR5LXBsb3R0ZWQpKQ0KICAgICAgICAgICAoc2V0ISBjdXJy
ZW50LWNudW0gKGNvbXBsZXgtbW9kIG1vZCAoY29tcGxleC1tdWwgY251bS1i
YXNlIGN1cnJlbnQtY251bSkpKQ0KICAgICAgICApDQogICAgICAgIChyZXZl
cnNlIGFscmVhZHktcGxvdHRlZCkNCiAgKQ0KKQ0KICAgICAgICANCihkZWZp
bmUgKGxpc3QtdG8tYXJyYXkgaW5MaXN0IGluS2luZCkgICAgICA7OyBBbm90
aGVyIGhhY2ssIHR1cm5zIGxpc3RzIGludG8gYXJyYXlzICh1c2VkIGZvciBz
ZXR0aW5nIHBpeGVsIGNvbG9yKS4gIFByb2JhYmx5IGFuIGVhc2llciB3YXku
DQogIChsZXQqIA0KICAgICAgICgNCiAgICAgICAgKHRoZUFycmF5IChjb25z
LWFycmF5IChsZW5ndGggaW5MaXN0KSBpbktpbmQpKQ0KICAgICAgICAoaSAw
KQ0KICAgICAgICkNCiAgICAgICAod2hpbGUgKDwgaSAobGVuZ3RoIGluTGlz
dCkpDQogICAgICAgICAoYXNldCB0aGVBcnJheSBpIChudGggaSBpbkxpc3Qp
KQ0KICAgICAgICAgKHNldCEgaSAoKyBpIDEpKQ0KICAgICAgICkNCiAgICAg
ICB0aGVBcnJheQ0KICApDQopDQoNCg0KKGRlZmluZSAoc2NyaXB0LWZ1LWNv
bXBsZXgtbW9kLWV4cCByZWFsIGltYWdpbmFyeSBtb2QgZm9yZWdyb3VuZCBi
YWNrZ3JvdW5kKQ0KDQogIChsZXQqIA0KICAgICAgICAoIA0KICAgICAgICAg
KHBpeGVscy10by1wbG90IChjb21wbGV4LWV4cCBtb2QgKGxpc3QgcmVhbCBp
bWFnaW5hcnkpKSkNCiAgICAgICAgIChjdXJyZW50LXBvaW50KQ0KICAgICAg
ICAgKHRoZUltYWdlIChjYXIgKGdpbXAtaW1hZ2UtbmV3IG1vZCBtb2QgUkdC
KSkpDQogICAgICAgICAodGhlTGF5ZXIgKGNhciAoZ2ltcC1sYXllci1uZXcg
dGhlSW1hZ2UgbW9kIG1vZCBSR0JfSU1BR0UgIkdlbmVyYXRlZCBieSBjb21w
bGV4LW1vZC1leHAiIDEwMCBOT1JNQUwpKSkNCiAgICAgICAgIChvbGRCYWNr
Z3JvdW5kIChjYXIgKGdpbXAtcGFsZXR0ZS1nZXQtYmFja2dyb3VuZCkpKQ0K
ICAgICAgICApDQoNCiAgICAgICAgOzsgVGhpcyBpcyBhIGJ1bmNoIG9mIGNy
YXAgdG8gc2V0IHRoZSBpbWFnZSB1cCB3LyB0aGUgcHJvcGVyIGJhY2tncm91
bmQgY29sb3IgYW5kIGJsYWggYmxhaCBibGFoDQoNCiAgICAgICAgICAgKGdp
bXAtaW1hZ2UtZGlzYWJsZS11bmRvIHRoZUltYWdlKQ0KICAgICAgICAgICAo
Z2ltcC1pbWFnZS1hZGQtbGF5ZXIgdGhlSW1hZ2UgdGhlTGF5ZXIgMCkNCiAg
ICAgICAgICAgKGdpbXAtcGFsZXR0ZS1zZXQtYmFja2dyb3VuZCBiYWNrZ3Jv
dW5kKQ0KICAgICAgICAgICAoZ2ltcC1zZWxlY3Rpb24tYWxsIHRoZUltYWdl
KQ0KICAgICAgICAgICAoZ2ltcC1lZGl0LWNsZWFyIHRoZUltYWdlIHRoZUxh
eWVyKQ0KICAgICAgICAgICAoZ2ltcC1zZWxlY3Rpb24tbm9uZSB0aGVJbWFn
ZSkNCg0KICAgICAgICA7OyBKdXN0IGdvIHRocm91Z2ggYSBsb29wIHBsb3R0
aW5nIGVhY2ggb2YgdGhlIHJlc3VsdGFudCBwb2ludHM6DQoNCiAgICAgICAg
ICAgKHdoaWxlIChub3QgKG51bGw/IHBpeGVscy10by1wbG90KSkNCiAgICAg
ICAgICAgICAoc2V0ISBjdXJyZW50LXBvaW50IChjYXIgcGl4ZWxzLXRvLXBs
b3QpKQ0KICAgICAgICAgICAgIChnaW1wLWRyYXdhYmxlLXNldC1waXhlbCB0
aGVMYXllciAoUmUgY3VycmVudC1wb2ludCkgKEltIGN1cnJlbnQtcG9pbnQp
IDMgKGxpc3QtdG8tYXJyYXkgZm9yZWdyb3VuZCAnYnl0ZSkpDQogICAgICAg
ICAgICAgKHNldCEgcGl4ZWxzLXRvLXBsb3QgKGNkciBwaXhlbHMtdG8tcGxv
dCkpDQogICAgICAgICAgICkgDQoNCiAgICAgICAgOzsgQ2xlYW4gdXAgYW5k
IGRpc3BsYXkgdGhlIGltYWdlDQoNCiAgICAgICAgICAgKGdpbXAtaW1hZ2Ut
Y2xlYW4tYWxsIHRoZUltYWdlKQ0KICAgICAgICAgICAoZ2ltcC1kaXNwbGF5
LW5ldyB0aGVJbWFnZSkNCiAgICAgICAgICAgKGdpbXAtcGFsZXR0ZS1zZXQt
YmFja2dyb3VuZCBvbGRCYWNrZ3JvdW5kKQ0KICAgICAgICAgICAoZ2ltcC1p
bWFnZS1lbmFibGUtdW5kbyB0aGVJbWFnZSkNCiAgKQ0KKQ0KDQooc2NyaXB0
LWZ1LXJlZ2lzdGVyDQoNCiAgICJzY3JpcHQtZnUtY29tcGxleC1tb2QtZXhw
Ig0KICAgIjxUb29sYm94Pi9YdG5zL1NjcmlwdC1GdS9NYXRoL2NvbXBsZXgt
bW9kLWV4cCINCiAgICJDb21wdXRlcyB0aGUgZXhwb25lbmF0aW9uIG9mIGEg
Y29tcGxleCBpbnRlZ2VyIG1vZCBuIg0KICAgIk1hdHRoZXcgT0Nvbm5vciAo
bWF0dGhld0BhbnRpLWVhcnRoLm9yZykiDQogICAiTWF0dGhldyBPQ29ubm9y
Ig0KICAgIjEyLTktMTk5OCINCiAgICIiDQogICBTRi1WQUxVRSAiUmVhbCA6
IiAgIjIiDQogICBTRi1WQUxVRSAiSW1hZyA6IiAgIjciDQogICBTRi1WQUxV
RSAiQmFzZSA6IiAgIjQzIg0KICAgU0YtQ09MT1IgIlBsb3QgQ29sb3I6IiAg
JygwIDAgMCkNCiAgIFNGLUNPTE9SICJCYWNrZ3JvdW5kOiIgJygyNTUgMjU1
IDI1NSkNCikNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0K
--8323328-1007358829-913265612=:345--