Re: IsIntegerOrFloat
- To: mathgroup at smc.vnet.net
 - Subject: [mg87089] Re: IsIntegerOrFloat
 - From: carlos at Colorado.EDU
 - Date: Mon, 31 Mar 2008 02:06:16 -0500 (EST)
 - References: <200803290921.EAA16390@smc.vnet.net> <fsnbfs$dcg$1@smc.vnet.net>
 
Thanks to all who replied.  I have collected here 4 solutions
for comparison,
IIOF1[list_]:=With[{ll=Flatten@list},
  If[Length[ll]==Length[Cases[ll,_Real|_Integer]],
  True,False]];  (* Peter Breitfeld *)
IIOF2[expr_]:=VectorQ[expr,Head[#]===Integer||Head[#]===Real&];
   (* Szabolcs Horvat *)
IIOF3[expr_]:=Cases[expr,
              x_/;Not[Head[x]===Integer||Head[x]===Real]->False,1,1]/.
              {False}->False/.{}->True;  (* Jean-Marc Gulliet *)
IIOF4[expr_]:=VectorQ[expr,NumberQ[#]&&(Head[#]=!=Rational)&&
              (Head[#]=!=Complex)&];  (* Andrzej Kozlowski *)
(* Albert Retey's submission not tested since it wasnt
   wrapped as function *)
A timing test on a random-float list of 10^6 items gives
(version 5.2 on MacBook Pro laptop running Mac OS X 10.4.11,
dual 2.3GHz Intel processors)
  IIOF1      0.396629 Second
  IIOF2      2.47186 Second
  IIOF3      2.81298 Second
  II0F4      2.9122 Second
I have no idea why IIOF1 is about 6 times faster than the others.
- References:
- IsIntegerOrFloat
- From: carlos@Colorado.EDU
 
 
 - IsIntegerOrFloat