require 'narray'
include NMath

$N = 1000

a = NArray.float($N,1).indgen + 1
b = NArray.float(1,$N).indgen + 1

a_ = NArray.float(1,$N) + 1
b_ = NArray.float($N,1) + 1

a=a*a
b=b*b

aa = a*a_
bb = b_*b

mat = aa + bb

# lower memory usage
a = 0
b = 0
a_ = 0
b_ = 0
aa = 0
bb = 0
GC.start

M= NMatrix.new(Float,$N,$N)
M.fill! $N*$N

res = mat <= M

puts res.mean * 4

sum = 0

for i in 0...$N
  for j in 0...$N
    sum += res[i,j]
   end
end

puts (sum * 4.0)/$N/$N