Hello,
I have following Ruby code:
class Random
  def initialize(init, im=139968, ia=3877, ic=29573)
    @last = init
    @im = im
    @ia = ia
    @ic = ic
  end
  def next(max)
    (max * (@last = (@last * @ia + @ic) % @im)) / @im
  end
end

v = Random.new(42.0)
10.times do
  puts v.next(1.0)
end

And I try to write the next-function in c
float gen_random(int *last, float max, int IM, int IA, int IC) {
        *last = (*last * IA + IC) % IM;
        return (max * *last / (float)IM);
}
and with help SWIG I try make useable in Ruby but I can not.

require 'fastac'
...
 def next(max)
#     (max * (@last = (@last * @ia + @ic) % @im)) / @im
     Fastac.gen_random(@last, max, @im, @ia, @ic)
  end
...


$ ruby gen_random.rb
gen_random.rb:12:in `gen_random': Expected argument 0 of type int *, but
got Fixnum 42 (TypeError)
        in SWIG method 'gen_random'     from gen_random.rb:12:in `next'
        from gen_random.rb:18
        from gen_random.rb:17:in `times'
        from gen_random.rb:17
[/code]

What I make wrong?

best regards
-- 
Posted via http://www.ruby-forum.com/.