# 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('7ffeffffffffffffffffffffffffffff'))
