pythonの区間演算ライブラリ進捗2016-01-05
実は大体できた(唐突)。
今回はvmathクラスの紹介
import pint as pn
from pint import vmath
a = 2.
itv_a = pn.interval(a)
print(itv_a)
[2.0,2.0]
vmath.sqrt(a)
1.4142135623730951
floatを代入するとfloatが返ってくる
vmath.sqrt(itv_a)
[1.414213562373095,1.4142135623730951]
intervalを代入するとintervalが返ってくる
じゃあ、少し変なことをしてみる
itvmath = pn.vmath()
itvmath.arg_type = pn.interval
このitvmathのmath関数を使う時は代入する前にinterval型に変換するように設定
itvmath.sqrt(a)
[1.414213562373095,1.4142135623730951]
返ってくるのはinterval型になる。
itvmath.sqrt(pn.interval(a))と同じ
itvmath.sqrt(itv_a)
[1.414213562373095,1.4142135623730951]
itvmath2 = pn.vmath()
itvmath2.return_type = pn.interval
itvmath2.sqrt(a)
[1.4142135623730951,1.4142135623730951]
return_typeはreturnする直前に変換を行う
return return_type(answer)となる
そのため、変換するタイミングが違うitvmath.sqrt(2.)とitvmath2.sqrt(2.)は結果が少し違う
このようにmath関数の振る舞いを自由に変更することができるのがvmathクラスの特徴です。
今はinterval型とビルトインされている型にしか対応してませんが、そのうち増やす予定