Une belle analyse ! Toutefois, pour faire le pinailleur😅, le développement limité de log2(1+x) autour de x=0 n'est pas x mais x/log(2). Mais remarquer que x est une approximation adaptée à la situation de log2(1+x) est une belle astuce. L'histoire dit elle si ce raccourci est au départ une petite erreur ? C'est un classique des pièges de prof de math...
Dans la même veine, le C=0.043 minimise le maximum de l'écart entre log2(1+x) et x+C pour x entre 0 et 1 en valeur absolue, ce qui est bien le but recherché. Cela va donc un peu au delà d'une simple considération...
Merci pour cette explication, c’est super intéressant! C’est un peu le boulier moderne.
Cela me fait penser à une substitution d’ADN. On zoome dans le code avec un microscope et on va modifier à la base (bit, nucléotide) le petit bloc qui nous embête. On travaille à deux niveaux: l’objectif global du code est complètement différent.
Avons-nous un ordre de grandeur du temps gagné sur les processeurs de l’époque par rapport à un calcul direct en 1/sqrt(x)? Facteur 2, 5, 10, etc.?
Bonjour, très bel article 👍. Quand j'ai découvert mon intérêt pour l'optimisation du code dans ma jeunesse, John Carmack, mais aussi son acolyte d'un temps, Michael Abrash, dont les livres sont excellents, ont été des maîtres à penser !
PS: Rooo "La mantisse est nulle" sérieusement ? 🙃🥲😁
Superbe article ! Ça n'est jamais simple de vulgariser ce genre de thématique, encore bravo pour cette explication !
Une belle analyse ! Toutefois, pour faire le pinailleur😅, le développement limité de log2(1+x) autour de x=0 n'est pas x mais x/log(2). Mais remarquer que x est une approximation adaptée à la situation de log2(1+x) est une belle astuce. L'histoire dit elle si ce raccourci est au départ une petite erreur ? C'est un classique des pièges de prof de math...
Dans la même veine, le C=0.043 minimise le maximum de l'écart entre log2(1+x) et x+C pour x entre 0 et 1 en valeur absolue, ce qui est bien le but recherché. Cela va donc un peu au delà d'une simple considération...
Merci encore pour cet excellent billet !
Ah mince je pensais avoir déjà corrigé cette erreur mais je n'avais pas validé le changement, c'est maintenant fait ! Merci !
Merci pour cette explication, c’est super intéressant! C’est un peu le boulier moderne.
Cela me fait penser à une substitution d’ADN. On zoome dans le code avec un microscope et on va modifier à la base (bit, nucléotide) le petit bloc qui nous embête. On travaille à deux niveaux: l’objectif global du code est complètement différent.
Avons-nous un ordre de grandeur du temps gagné sur les processeurs de l’époque par rapport à un calcul direct en 1/sqrt(x)? Facteur 2, 5, 10, etc.?
Un grand merci et un grand bravo pour votre travail, avec des explications comme toujours très complètes et vraiment limpides.
Bonjour, très bel article 👍. Quand j'ai découvert mon intérêt pour l'optimisation du code dans ma jeunesse, John Carmack, mais aussi son acolyte d'un temps, Michael Abrash, dont les livres sont excellents, ont été des maîtres à penser !
PS: Rooo "La mantisse est nulle" sérieusement ? 🙃🥲😁
Bonjour, incroyable l'astuce de cette méthode et bravo pour cette superbe explication. Cordialement