Deal com estouro de exp usando numpy

Usando numpy, tenho esta definição de função:

def powellBadlyScaled(X):
    f1 = 10**4 * X[0] * X[1] - 1
    f2 = numpy.exp(-numpy.float(X[0])) + numpy.exp(-numpy.float(X[1])) - 1.0001
    return f1 + f2

Esta função é avaliada inúmeras vezes em uma rotina de otimização. Muitas vezes gera exceção:

RuntimeWarning: overflow encountered in exp

Entendo que o operando não pode ser armazenado no espaço alocado para um float. Mas como posso superar o problema?

questionAnswers(10)

yourAnswerToTheQuestion