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:innext’
from gen_random.rb:18
from gen_random.rb:17:in `times’
from gen_random.rb:17
[/code]
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.
See SWIG and Ruby
(you can reuse your original header if you #ifdef swig directives, see
swig doc for more info).
If that doesn’t help, please post somewhere your code, including ruby,
c, and swig header. It would make reproducing your problem easier.
Your link doesn’t help. My little code is atteched.
Can you please remove my email address from your last message?
Jano S. wrote:
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.
See SWIG and Ruby
(you can reuse your original header if you #ifdef swig directives, see
swig doc for more info).
If that doesn’t help, please post somewhere your code, including ruby,
c, and swig header. It would make reproducing your problem easier.
J.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.