# superseeker/Mma problem

N. J. A. Sloane njas at research.att.com
Sat Apr 8 13:24:43 CEST 2000

```Dear SeqFans,

Superseeker is having trouble with Mathematica,

and I don't know Mathematica well enough to fix this.

The problem seems to be with CHRISTIAN KRATTHENTALER's
"Rate" program.  I have asked him for advice but did not get

But my guess is that this is a trivial error
and anyone who knows Mma can see what the problem is right away.

As soon as I get this corrected I will post a message here.

Here is the problem:

I have a file called superrate.m  that Christian K. sent me
(I give it at the end of this message)

In superseeker, I call superrate as follows:

(limit cputime \$maptime; echo " << superrate\`
\"calling rate\"
Ratekurz[
\$lis_mma                     # example: \$lis_mma contains 1,2,3,4,5,6,7,8,9
]
InputForm[Out[3]]
\"back from rate\"
Quit[]
" | math -batchout >\$tmp )

But then i get error messages as follows:

Mathematica 4.0 for Silicon Graphics
Copyright 1988-1999 Wolfram Research, Inc.
-- Motif graphics initialized --

In[1]:=
Syntax::com: Warning: comma encountered with no adjacent expression; the
expression will be treated as Null.  (line 32 of "superrate`")

Syntax::com: Warning: comma encountered with no adjacent expression; the
expression will be treated as Null.  (line 32 of "superrate`")

In[2]:=
Out[2]= calling rate

In[3]:=
Out[3]= {}

In[4]:=
Out[4]//InputForm= {}

In[5]:=
Out[5]= back from rate

In[6]:=

So it seems that line 32 of superrate.m has an error???

Finally , here is superrate.m (there are 157 lines)

If anyone can tell me what is wrong, i would greatly appreciate it!

Neil Sloane (njas at research.att.com)

(*Erraten von Zahlenfolgen*)            [that's line 1 - njas]

(*Rationale Interpolation*)

RationalInterpolation::usage =
"RationalInterpolation[func, {x, m, k}, {x1, x2, ..., xmk1}, (opts)] gives the
rational interpolant to func (a function of the variable x), where m and
k are the degrees of the numerator and denominator, respectively, and
{x1, x2, ..., xmk1} is a list of m+k+1 abscissas of the interpolation points."

RationalInterpolation[func_, {x_, m_Integer, k_Integer}, xlist_, opts___] :=
Module[{xinfo, bias, answer, biasOK = True},
((xinfo = {x, m, k};
bias = xlist);
(answer = RI[func, xinfo, bias]; answer =!= Fail))
];

RI[f_, xinfo_, bias_] :=
Module[{i, mk1, xx, fx, mat, tempvec, x, x0, x1, m, k},
x = xinfo[[1]];
(m = xinfo[[2]];
k = xinfo[[3]];
mk1 = m+k+1;
xx = bias);
fx = Table[f /. x->xx[[i]],{i,Length[xx]}];
mat = Table[1,{i,mk1+1}];
tempvec = Table[1,{i,mk1}];
mat[[1]] = tempvec;
mat[[m+2]] = -tempvec*fx;
Do[tempvec *= xx;
If[i <= m,mat[[i+1]] = tempvec,,];
If[i <= k,mat[[i+m+2]] = -tempvec*fx],{i,Max[m,k]}];
If[\$VersionNumber>=2.,\$Messages=OutputStream["",1],\$Messages={}];
xx = Solve[Transpose[mat].Table[x[i],{i,1,m+k+2}]==Table[0,{i,1,m+k+1}],
Table[x[i],{i,1,m+k+2}]];
If[\$VersionNumber>=2.,\$Messages=OutputStream["stdout",1],\$Messages={"stdout"}];
xx = Table[x[i],{i,1,m+k+2}] /. xx[[1]];
If[Head[xx] === Solve, Return[Fail]];
Factor[(xx[[1]]+Sum[xx[[i+1]] x^i,{i,m}])/(Sum[xx[[i+m+1]] x^(i-1),{i,k+1}])]
];

RateFolge[x_List,t_]:=Module[{X=x,funk,var,L1,L2,ii,Erg},
L1=Length[X];
Do[funk[var]=X[[var]],{var,L1}];
Erg={};
For[L2=0,L2<=L1-2,L2++,
X=RationalInterpolation[funk[var],{var,L1-L2-2,L2},Table[ii,{ii,L1-1}]];
If[Factor[Denominator[X]/.var->L1]=!=0&&Factor[(X/.var->L1)-funk[L1]]===0,Erg=Union[{X/.var->t},Erg]]
];
Erg
]

Rate[x___]:=Module[{X={x},L,Zaehler,Folge,var,ii,Erg={},i},
i[0]=i0;i[1]=i1;i[2]=i2;i[3]=i3;i[4]=i4;i[5]=i5;i[6]=i6;i[7]=i7;i[8]=i8;
i[9]=i9;i[10]=i10;i[11]=i11;i[12]=i12;i[13]=i13;i[14]=i14;i[15]=i15;
i[16]=i16;i[17]=i17;i[18]=i18;i[19]=i19;i[20]=i20;
L=Length[X];
Folge=Table[0,{L-1}];
For[Zaehler=1,Zaehler<=L-1,Zaehler++,
Folge[[Zaehler]]=X;
X=Table[X[[ii+1]]/X[[ii]],{ii,L-Zaehler}];
];
For[Zaehler=1,Zaehler<=L-1,Zaehler++,
X=RateFolge[Folge[[Zaehler]],i[Zaehler-1]];
If[X=!={},
Do[X=Table[Folge[[Zaehler-ii,1]]*
Product[X[[var]],
Release[{i[Zaehler-ii],1,i[Zaehler-ii-1]-1}]],
{var,Length[X]}],
{ii,Zaehler-1}
];
];
Erg=Union[Erg,X]
];
Erg
]
Ratepol[x___]:=Module[{X={x},funk,var,L1,L2,ii,Erg},
L1=Length[X];
Do[funk[var]=X[[var]],{var,L1}];
Erg={};
X=RationalInterpolation[funk[var],{var,L1-2,0},Table[ii,{ii,L1-1}]];
If[Factor[(X/.var->L1)-funk[L1]]===0,Erg=Union[{X/.var->i0},Erg]];
Erg
]
Rateint[x___]:=Module[{X={x},L,Zaehler,Folge,var,ii,Erg={},i},
i[0]=i0;
L=Length[X];
Folge=Table[0,{L-1}];
For[Zaehler=1,Zaehler<=Min[1,L-1],Zaehler++,
Folge[[Zaehler]]=X;
X=Table[X[[ii+1]]/X[[ii]],{ii,L-Zaehler}];
];
For[Zaehler=1,Zaehler<=Min[1,L-1],Zaehler++,
X=RateFolge[Folge[[Zaehler]],i[Zaehler-1]];
If[X=!={},
Do[X=Table[Folge[[Zaehler-ii,1]]*
Product[X[[var]],
Release[{i[Zaehler-ii],1,i[Zaehler-ii-1]-1}]],
{var,Length[X]}],
{ii,Zaehler-1}
];
];
Erg=Union[Erg,X]
];
Erg
]
Ratekurz[x___]:=Module[{X={x},L,Zaehler,Folge,var,ii,Erg={},i},
i[0]=i0;i[1]=i1;i[2]=i2;
L=Length[X];
Folge=Table[0,{L-1}];
For[Zaehler=1,Zaehler<=Min[3,L-1],Zaehler++,
Folge[[Zaehler]]=X;
X=Table[X[[ii+1]]/X[[ii]],{ii,L-Zaehler}];
];
For[Zaehler=1,Zaehler<=Min[3,L-1],Zaehler++,
X=RateFolge[Folge[[Zaehler]],i[Zaehler-1]];
If[X=!={},
Do[X=Table[Folge[[Zaehler-ii,1]]*
Product[X[[var]],
Release[{i[Zaehler-ii],1,i[Zaehler-ii-1]-1}]],
{var,Length[X]}],
{ii,Zaehler-1}
];
];
Erg=Union[Erg,X]
];
Erg
]
Rateeins[x___]:=Module[{X={x},L,Zaehler,Folge,var,ii,Erg={},i},
i[0]=i0;i[1]=i1;i[2]=i2;i[3]=i3;i[4]=i4;i[5]=i5;i[6]=i6;i[7]=i7;i[8]=i8;
i[9]=i9;i[10]=i10;i[11]=i11;i[12]=i12;i[13]=i13;i[14]=i14;i[15]=i16;i[17]=i17;
i[18]=i18;i[19]=i19;i[20]=i20;
L=Length[X];
Folge=Table[0,{L-1}];
For[Zaehler=1,Zaehler<=Min[3,L-1],Zaehler++,
Folge[[Zaehler]]=X;
X=Table[X[[ii+1]]/X[[ii]],{ii,L-Zaehler}];
];
For[Zaehler=1,Zaehler<=Min[3,L-1],Zaehler++,
X=RateFolge[Folge[[Zaehler]],i[Zaehler-1]];
If[X=!={},
Do[X=Table[Folge[[Zaehler-ii,1]]*
Product[X[[var]],
Release[{i[Zaehler-ii],1,i[Zaehler-ii-1]-1}]],
{var,Length[X]}],
{ii,Zaehler-1}
];
];
If[X=!={},Return[X]];
];
Erg
]

```