# [ncl-talk] problem with dim_avg_n and userdefined function (numeric and float)

Mon Oct 27 22:53:25 MDT 2014

```Hi, everyone.
Q1:
I was using NCL V6.2.0 to extract data from WRF results, however, it seemed that there was a bug in function of dim_avg_n.To simplify matters, I used dummy data, the script is as follows:
QUESTION 1:-----------------------------------------------------------------

begin

nyears=5
ncases=4
nspec=4
ntimes_real=680
nvlevs=2

colspectmp=new((/nyears,ncases,nspec,ntimes_real,100,100/), float)
colspec=new((/nyears,ncases,nspec,100,100/), float)
colspectmp=1.

specdntmp=new((/nyears,ncases,nspec,ntimes_real,nvlevs,100,100/), float)
specdn=new( (/nyears,ncases,nspec,nvlevs,100,100/), float)
specdntmp=1.

;abnormal !!!! It seemed that no values were passed to colspec !!!!
colsepc=dim_avg_n((/colspectmp/), 3)
print(avg(colspec))

;normal !!!!
specdn=dim_avg_n((/specdntmp/), 3)
print(avg(specdn))

end
--------------------------------------------------------------------------------------

Q2:What's the difference between numeric and float when using userdefined function. though max((/a,b/)) would do the same thing, I am
QUESTION2---------------------------------------------------------------------------------

undef( "fmax2v")
function fmax2v(x:float, y:float)
begin
if (x .ge. y)  then
return(x)
else
return(y)
end if
end

undef( "max2v")
function max2v(x:numeric, y:numeric)
begin
if (x .ge. y)  then
return(x)
else
return(y)
end if
end

begin

x=3

; normal loops !!!!!
do ii=1, 2
do jj=1, 3
print("ii="+(/ii/)+"   jj="+(/jj/))
print("1:  "+(/fmax2v(ii-x,0)/))
tmp=(/fmax2v(ii-x,0)/)
print("2:  "+ (/tmp/))
end do
end do

; abnormal  loops !!!!
do ii=1, 2
do jj=1, 3
print("ii="+(/ii/)+"   jj="+(/jj/))
print("1:  "+(/max2v(ii-x,0)/))
tmp=(/max2v(ii-x,0)/)
print("2:  "+ (/tmp/))
end do
end do

end
--------------------------------------------------------

With best regards.

```