負の数をベースとして指数計算を実行する場合、値を含む変数ではなく生の値を使用すると、一貫性のない結果が返されます。
IRBの場合:
1.9.3p194 :001 > -4.5 ** 0.5
=> -2.1213203435596424
1.9.3p194 :002 > foo = -4.5
=> -4.5
1.9.3p194 :003 > foo ** 0.5
=> (1.2989340843532398e-16+2.1213203435596424i)
1.9.3p194 :004 > (-4.5) ** 0.5
=> (1.2989340843532398e-16+2.1213203435596424i)
何が得られますか?明らかに、コンパイラーはとして解釈-4.5 ** 0.5
して-(4.5 ** 0.5)
いますが、変数を使用するときの動作が異なるのはなぜですか?