MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

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.



  • Prev by Date: Re: conversion of sin to cos
  • Next by Date: Re: Fast way to select those elements from a list that are in another
  • Previous by thread: Re: IsIntegerOrFloat
  • Next by thread: Re: IsIntegerOrFloat