ised: 72 46 caracteres
Isso é quase um ajuste perfeito ... existe uma "linguagem" por aí que parece ser feita exatamente para o golfe matemático: ised . Sua sintaxe ofuscada cria um código muito curto (sem variáveis nomeadas, apenas slots de memória inteiros e muitos operadores versáteis de char único). Definindo a função gama usando uma integral, consegui 80 caracteres aparentemente aleatórios
@4{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}@6{:@{$4::@5avg${0,1}>$2}$5:}@0,0@1,99;$6:::.
Aqui, o slot de memória $ 4 é uma função fatorial, espera-se que a função de bissecção do slot de memória $ 6 e o slot de memória $ 2 sejam configurados como entrada (fornecido antes de fornecer este código). Os slots $ 0 e $ 1 são os limites da bissecção. Exemplo de chamada (supondo que o código acima esteja no arquivo inversefactorial.ised
)
bash> ised '@2{556}' --f inversefactorial.ised
556
5.86118
Claro, você pode usar o builtin! operador, nesse caso você tem até 45 caracteres
@6{:@{{@5avg${0,1}}!>$2}$5:}@0,0@1,99;$6:::.
Cuidado, a precedência do operador às vezes é estranha.
Editar: lembrou-se de incorporar as funções em vez de salvá-las. Bata o Mathematica com 72 caracteres!
@0,0@1,99;{:@{{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}::@5avg${0,1}>$2}$5:}:::.
E usando o! incorporado você obtém 41.
Atualização com atraso de um ano:
Acabei de perceber que isso era altamente ineficiente. Golfe até 60 caracteres:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}@:exp-$3>$2}$5:}:::.
Se utf-8 for usado (o Mathematica também), chegamos a 57:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}·exp-$3>$2}$5:}∙.
Uma reescrita um pouco diferente pode reduzir para 46 (ou 27, se estiver usando o builtin!):
{:x_S{.5@3[.,.1,99]^avgx·exp-$3*.1<$2}:}∙∓99_0
Os dois últimos caracteres podem ser removidos se você estiver de acordo com a resposta impressa duas vezes.