;+ ; ;Name: is_num ; ;Purpose: determines if input is a number ; ;Inputs: num: the number can be single element or array ; ;Outputs: 1:yes 0:no ; ;Keywords: unsigned: set this if you only want to know if it is ; unsigned ; signed: set this if you only want to know if it is signed ; ; real: set this if you want to know only if it is real ; ; complex: set this if want to know only if it is complex ; ; floating: set this if you want to know if it is floating ; point ; ; integer: set this is you want to know if it is not floating point ; ; single: set this if you want to know if it is single precision floating point ; ; double: set this if you want to know if it is double precision floating point ; ; ; NOTES: if you can think of other classes of number worth testing ;that involve more than one idl type feel free to add ; if you specify and impossible numerical class like: ; b = is_num(1,/signed,/unsigned) ; -or- ; b = is_num(1,/unsigned,/complex) ; ; it will return 0 ; ;LAST MODIFICATION: 02/11/01 ; $LastChangedBy: davin-win $ ; $LastChangedDate: 2007-10-22 07:26:16 -0700 (Mon, 22 Oct 2007) $ ; $LastChangedRevision: 1758 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/ssl_general/trunk/tplot/tplot.pro $ ;- function is_num,num,unsigned=unsigned,signed=signed,real=real,floating=floating,integer=integer,single=single,double=double t = size(num,/type) ;unsigned integral types if (t eq 1 || $ t eq 12 || $ t eq 13 || $ t eq 15) && $ ~keyword_set(signed) && $ ~keyword_set(floating) && $ ~keyword_set(complex) $ then return,1 ;signed integral types if (t eq 2 || $ t eq 3 || $ t eq 14) && $ ~keyword_set(unsigned) && $ ~keyword_set(floating) && $ ~keyword_set(complex) $ then return,1 ;single precision floating if t eq 4 && $ ~keyword_set(unsigned) && $ ~keyword_set(integer) && $ ~keyword_set(complex) && $ ~keyword_set(double) $ then return,1 ;double precision floating if t eq 5 && $ ~keyword_set(unsigned) && $ ~keyword_set(integer) && $ ~keyword_set(complex) && $ ~keyword_set(single) $ then return,1 ;complex types if (t eq 6 || $ t eq 9) && $ ~keyword_set(unsigned) && $ ~keyword_set(integer) && $ ~keyword_set(complex) $ then return,1 return,0 end