Je mets en œuvre un algorithme d'optimisation et ai des heuristiques différentes pour les cas où les limites inférieure et supérieure de la solution sont inconnues ou non ne pas.Test plus général du même ordre de grandeur que comparer étage (log10 (abs (n)))
Pour vérifier, ma première approche serait tout simplement en prenant
if(abs(floor(log10(abs(LBD))) - floor(log10(abs(UBD)))) < 1)
{ //(<1 e.g. for 6, 13)
//Bounds are sufficiently close for the serious stuff
}
else {
//We need some more black magic
}
Mais ce requires previous checks à gerneralized à NAN, ± INFINITY. De plus, dans le cas où LBD est négatif et positif à l'UBD, nous ne pouvons pas supposer que le contrôle ci-dessus seul nous assure qu'ils sont presque tous d'un ordre de grandeur.
Y a-t-il une approche dédiée à cela ou suis-je coincé avec ce hackery?
Pourquoi utilisez-vous log10 ici? Est-ce que 'LBD <= UBD && LBD * 10> UBD' ne serait pas meilleur? – geza
@geza Numéros négatifs! Mais merci de le souligner, j'ai eu un problème similaire avec ma formulation – mrclng
Bien sûr, vous devez prendre soin des nombres négatifs. Mon point est qu'un simple multiplier/comparer est beaucoup-beaucoup plus rapide que log10 – geza