 
 
 
 
 
 
Re: IsExact
- To: mathgroup at smc.vnet.net
- Subject: [mg80617] Re: IsExact
- From: carlos at colorado.edu
- Date: Sun, 26 Aug 2007 23:19:50 -0400 (EDT)
- References: <far9j8$477$1@smc.vnet.net>
Thanks to all who replied.  Several of you gave the solution
     IsExact[expr_] := Precision[expr]===Infinity
By analogy
     Isinexact[expr_] := Precision[expr]=!=Infinity
IsExact[c6] returns True for the dubious case {N[x]} but that
seems to be OK if x is undefined.  In any case both work
fine for the intended purpose, which is checking module
arguments.  Some modules of a G&C research program
only work properly for exact inputs.  For example:
HurwitzPolynomialList[a_,r_,norm_]:=Module[{PA,PH,b,k,rep,
    n=Length[a],s,z,i,j,modname="HurwitzPolynomialList"},
    If [n<=0, Return[{}]]; rep=z->r*(s+1)/(s-1);
    If [IsInexact[a]||IsInexact[r], Print[modname,
        " error: float input"]; Return[Null]];
    k=FindLastNonzero[a]; If [k==0, Return[{0}]];
    PA=a[[1]]+Sum[a[[i+1]]*z^i,{i,1,k-1}];
    PH=Simplify[Expand[(s-1)^(k-1)*(PA/.rep)]];
    b=CoefficientList[PH,s];
    If [norm, j=FindLastNonzero[b]; If [j>0,b=b/b[[j]] ]];
    Return[b]];

