Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Using modular numbers with Math::Pari

by hv (Parson)
on Oct 29, 2009 at 12:40 UTC ( #803944=perlquestion: print w/ replies, xml ) Need Help??
hv has asked for the wisdom of the Perl Monks concerning the following question:

I can get a modular reciprocal with Pari easily enough, eg:

use Math::Pari qw/ PARI Mod /; my($n, $p) = map PARI($_), (3, 17); my $recip = PARI(1) / Mod($n, $p); print "1 / $n == $recip\n";
1 / 3 == Mod(6,17)

The result "Mod(6,17)" is a modular value, representing the equivalence class of integers equivalent to 6 (mod 17), and that's great.

However I now want to get the "6" out of there as an integer for further work, i.e. to get the "common residue" of that modular number. I haven't found anything in the Math::Pari or Pari/GP docs that tells how to do that, and everything I've tried gives an error:

$int = int($recip); PARI: *** incorrect type in comparison. at -e line 1. $int = pari2num($recip); PARI: *** forbidden assignment t_INTMOD --> t_REAL. at -e line 1. $int = pari2iv($recip); PARI: *** incorrect type in gtolong. at -e line 1.

I could pull the value out with a regexp, but that would be silly. Surely there is a simple, efficient way to do this?

Hugo

Comment on Using modular numbers with Math::Pari
Select or Download Code
Replies are listed 'Best First'.
Re: Using modular numbers with Math::Pari
by blokhead (Monsignor) on Oct 29, 2009 at 14:24 UTC
    Pari's lift function "lifts" a modular residue back into the integers.
    ? lift( 1 / Mod(3,17) ) %1 = 6
    Presumably it is available from the Math::Pari bindings somehow (I only know pari, not the Perl bindings).

    blokhead

      Thanks!

      perl -MMath::Pari=PARI,Mod,lift -wle 'print lift(PARI(1)/Mod(3,17))' 6

      Perfect - not sure I'd ever have found that searching the docs myself.

      Hugo

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://803944]
Approved by Corion
Front-paged by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (10)
As of 2015-07-08 02:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls