为循环Pari版本2.11.1 Win64实现递归并行问题

时间:2019-01-20 23:42:47

标签: pari

我有一个生成2个解x1,x2的二次方程,每个解又生成两个新解。这种情况一直持续到无限。

我试图实现此目的的方法是使用向量r = [x1,x2]作为输入参数的例程。并使用parallel for循环来计算下一个2。

不幸的是,循环仅继续执行r []的第一个解决方案。

代码如下:

r=[1,2];
axyz=fileopen("myfile","w");
test(r)={
 parfor(i=1,2,r[i],c,
  if(c<>1,filewrite(axyz,c); 
   test([x1(c),x2(c)]))
 );
}

test(r);
IF语句是为了避免在统一时保存解决方案。

不需要写文件,可以用打印代替。

问题:   是否可以确保第二种解决方案也得到处理?   这样该函数扩展为生成所有解的无限解树。

1 个答案:

答案 0 :(得分:0)

使用parfor将无法实现您想要的。我建议使用深度优先搜索。您的代码不完整(缺少x1,x2的定义),因此以下代码未经测试-旨在显示必要的更改。

r=[1,2];
axyz=fileopen("myfile","w");
test(r,level)={
for(i=1,2,my(c=r[i]);
   if(c<>1,if(level==0, filewrite(axyz,c),
   test([x1(c),x2(c)], level-1))
 );
}
for(level=0, oo, test(r, level));