# decimalモジュールをインポートする
from decimal import Decimal, getcontext
# 16進数128ビット浮動小数点数を10進数に変換する関数
def hex_to_decimal128(hex_str):
# 16進数を2進数に変換する
bin_str = bin(int(hex_str, 16))[2:].zfill(128)
# 2進数を符号、指数、仮数に分解する
sign = bin_str[0]
exponent = bin_str[1:16]
significand = bin_str[16:]
# 指数を10進数に変換する
exponent = int(exponent, 2) - 16383
# 仮数を10進数に変換する
significand = int(significand, 2) / (1 << 112)
# 10進数を計算する
decimal = Decimal((-1)**int(sign, 2) * (1 + significand) * 2**exponent)
# 10進数を返す
return decimal
print(hex_to_decimal128('0x40024000000000000000000000000000'))
IyBkZWNpbWFs44Oi44K444Ol44O844Or44KS44Kk44Oz44Od44O844OI44GZ44KLCmZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbCwgZ2V0Y29udGV4dAoKIyAxNumAsuaVsDEyOOODk+ODg+ODiOa1ruWLleWwj+aVsOeCueaVsOOCkjEw6YCy5pWw44Gr5aSJ5o+b44GZ44KL6Zai5pWwCmRlZiBoZXhfdG9fZGVjaW1hbDEyOChoZXhfc3RyKToKICAgICMgMTbpgLLmlbDjgpIy6YCy5pWw44Gr5aSJ5o+b44GZ44KLCiAgICBiaW5fc3RyID0gYmluKGludChoZXhfc3RyLCAxNikpWzI6XS56ZmlsbCgxMjgpCiAgICAjIDLpgLLmlbDjgpLnrKblj7fjgIHmjIfmlbDjgIHku67mlbDjgavliIbop6PjgZnjgosKICAgIHNpZ24gPSBiaW5fc3RyWzBdCiAgICBleHBvbmVudCA9IGJpbl9zdHJbMToxNl0KICAgIHNpZ25pZmljYW5kID0gYmluX3N0clsxNjpdCiAgICAjIOaMh+aVsOOCkjEw6YCy5pWw44Gr5aSJ5o+b44GZ44KLCiAgICBleHBvbmVudCA9IGludChleHBvbmVudCwgMikgLSAxNjM4MwogICAgIyDku67mlbDjgpIxMOmAsuaVsOOBq+WkieaPm+OBmeOCiwogICAgc2lnbmlmaWNhbmQgPSBpbnQoc2lnbmlmaWNhbmQsIDIpIC8gKDEgPDwgMTEyKQogICAgIyAxMOmAsuaVsOOCkuioiOeul+OBmeOCiwogICAgZGVjaW1hbCA9IERlY2ltYWwoKC0xKSoqaW50KHNpZ24sIDIpICogKDEgKyBzaWduaWZpY2FuZCkgKiAyKipleHBvbmVudCkKICAgICMgMTDpgLLmlbDjgpLov5TjgZkKICAgIHJldHVybiBkZWNpbWFsCgpwcmludChoZXhfdG9fZGVjaW1hbDEyOCgnMHg0MDAyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpKQo=