Skip to Content.
Sympa Menu

cado-nfs - [Cado-nfs-discuss] calling CADO-NFS from Sage

Subject: Discussion related to cado-nfs

List archive

[Cado-nfs-discuss] calling CADO-NFS from Sage


Chronological Thread 
  • From: paul zimmermann <Paul.Zimmermann@inria.fr>
  • To: cado-nfs-discuss@lists.gforge.inria.fr
  • Subject: [Cado-nfs-discuss] calling CADO-NFS from Sage
  • Date: Thu, 04 Jun 2015 13:23:18 +0200
  • List-archive: <http://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/>
  • List-id: A discussion list for Cado-NFS <cado-nfs-discuss.lists.gforge.inria.fr>

Hi,

the Sage code below might be useful to some of you. It enables to call
CADO-NFS from within Sage. I guess it is trivial to extend to DLP.
It was tested with CADO-NFS 1.1, 2.1.1 and the current git version.

Paul

PS: thanks to Jean-Luc Garambois

import subprocess, os
def my_exec_factor(nbr):
cmd = ['/tmp/cado-nfs-1.1/factor.sh', str(nbr)]
# cmd = ['/tmp/cado-nfs-2.1.1/factor.sh', str(nbr)]
my_env = os.environ
if my_env.has_key("PYTHONHOME"):
my_env.pop("PYTHONHOME")
if my_env.has_key("PYTHONPATH"):
my_env.pop("PYTHONPATH")
if my_env.has_key("PATH"):
my_env.pop("PATH")
if my_env.has_key("CADO_DEBUG"):
my_env.pop("CADO_DEBUG")
process = subprocess.Popen(cmd, stderr=subprocess.STDOUT, \
stdout=subprocess.PIPE, env=my_env)
output, unused_err = process.communicate()
retcode = process.poll()
if retcode:
print "Output :"
print output
raise subprocess.CalledProcessError(retcode, cmd)
return output

res=my_exec_factor(90377629292003121684002147101760858109247336549001090677693)

r=[]
# the factors are in line -6 for CADO-NFS 1.1, line -2 for 2.1.1
for i in res.splitlines()[-6].split(' ') + res.splitlines()[-2].split(' '):
try:
r.append(Integer(i))
except TypeError:
pass
print r



  • [Cado-nfs-discuss] calling CADO-NFS from Sage, paul zimmermann, 06/04/2015

Archive powered by MHonArc 2.6.19+.

Top of Page