51416


Rubyに関する以下のコードでRange Errorが出てしまうのですが，どのように対処したら良いでしょうか

初歩的な質問ですが宜しくお願いします．

[code]

    require 'complex'
    
    rnd = Random.new(1234)
    
    # 複素数で表示させたい
    p (1.0 / 17.7827) * Math.exp(Complex(Math.cos(rnd.rand(1.0)), Math.sin(rnd.rand(1.0))) * 2 * Math::PI)
    
[/code]

以下，エラーコードです

[code]

    prog.rb:5:in `to_f': can't convert 6.168304426149614+3.661527184496933i into Float (RangeError)
    from prog.rb:5:in `exp'
    from prog.rb:5:in `<main>'
    
[/code]


CC BY-SA 4.0
2018-11-02T08:35:46.487
49892
2018-12-21T14:37:33.070
2018-11-02T08:46:10.997
30173
30173
question
ruby
Rubyにおける複素数expの計算でRange Errorがでてしまいます


`Math.exp()` は複素数に対応していませんので、[CMath.exp](https://docs.ruby-
lang.org/ja/latest/method/CMath/m/exp.html) を使うと良さそうです。

[code]

    require 'cmath'
    p (1.0 / 17.7827) * CMath.exp(Complex(...
    
[/code]

([metropolis](https://ja.stackoverflow.com/users/16894/metropolis)さんの[コメント](https://ja.stackoverflow.com/questions/49892/ruby%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E8%A4%87%E7%B4%A0%E6%95%B0exp%E3%81%AE%E8%A8%88%E7%AE%97%E3%81%A7range-
error%E3%81%8C%E3%81%A7%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%81%BE%E3%81%99#comment52021_49892)より)


CC BY-SA 4.0
2018-12-21T07:49:16.257
51416
2018-12-21T14:37:33.070
2018-12-21T14:37:33.070
19110
3060
49892
answer