MySQL converter hex para dobro

Qual abordagem deve ser adotada no MySQL para converter de HEX (8 bytes) para um valor duplo?

Para converter de HEX para INT, utilizo CONV (hex_value, 16,10). Mas, para converter para o dobro, não faço ideia.

CREATE FUNCTION HEX2DOUBLE(hex_input TEXT) RETURNS DOUBLE
DETERMINISTIC
BEGIN
DECLARE hex_bits VARCHAR(64);

DECLARE sign_bit VARCHAR(1);
DECLARE expoent_bits VARCHAR(11);
DECLARE mantissa_bits VARCHAR(52);

DECLARE i INT;
DECLARE mantissa DOUBLE;
DECLARE expoent INT;
DECLARE result DOUBLE;

SET hex_bits = LPAD(CONV(hex_input, 16, 2), 64, '0');

SET sign_bit = SUBSTR(hex_bits, 1, 1);
SET expoent_bits = SUBSTR(hex_bits, 2, 11);
SET mantissa_bits = SUBSTR(hex_bits, 13, 52);

SET expoent = CONV(expoent_bits, 2, 10)-1023;

SET i = 1;

SET mantissa = 0;
WHILE(i <= 52) DO
    IF SUBSTR(mantissa_bits, i , 1 ) = '1' THEN 
        SET mantissa  =  mantissa +  1/POWER(2, i);        
    END IF;
    SET i = i + 1;
END WHILE;

IF(expoent > -1023) THEN
    SET mantissa = mantissa + 1;
END IF;

SET result = POWER(2, expoent) * mantissa;
IF(sign_bit = 1) THEN
    SET result = -1 * result;
END IF;

RETURN result;
END//

O exposto acima parece funcionar a maior parte do tempo. O que vocês poderiam dizer sobre isso? Um problema que estou enfrentando é o erro SQL (1690): o valor DUPLO está fora do intervalo em pow (2, expoent @ 7), que eu acho que se refere à linhaSET result = POWER(2, expoent) * mantissa;

questionAnswers(0)

yourAnswerToTheQuestion