Feda /dev/ - No Javascript allowed

Normas
spoiler
Personas non gratas
Memes feda dev




Dr_Manhattan

#52559 para saber eso, antes tienes que haber follado con una asiática

1 respuesta
newfag

#52561 las 56k pajas netas convalidan

1
Dr_Manhattan

https://www.campusmvp.es/recursos/post/la-linea-de-codigo-que-cambio-la-industria-de-los-graficos-3d.aspx

1 1 respuesta
Seyriuu

#52563 y qué se supone que hace esa línea de codigo en concreto?

2 respuestas
gnulinux

#52529 Si me permites una corrección: los aparejadores no usan la grúa. Son «arquitectos técnicos», y una de sus funciones es llevar el control material de la obra.

1 respuesta
Fyn4r

Carmack es el goat

1 respuesta
Dr_Manhattan

#52564 si no te has molestado en leerlo estás que me voy a molestar yo en explicártelo. En el artículo lo dicen

2 respuestas
pantocreitor

#52564 en el artículo lo dice kavayero

#52565 pero usan vim???

2 respuestas
Seyriuu

#52568 #52567 Lo único que dice el artículo es:

Esa fórmula es una manera aparentemente "mágica" de calcular la raíz cuadrada inversa aproximada, una operación común para determinar distancias entre vectores en modelado 3D en tiempo real.

Yo también puedo poner un hola mundo y decir que de forma mágica calcula si te has comido las tres pollas anuales o aún no.

O a lo mejor es que vais de desus de la vida pero tampoco sabéis explicar esa línea de código, no pasa nada.

edit: En la wiki lo explica un poco mejor:

spoiler

Básicamente el numerito 0x5f3759df es una constante que representa la raiz cuadrada de 2 elevado a 127, que estaría bien que alguien explicase por qué este número y no la raíz cuadrada de mi abuela en bicicleta por ejemplo.

Por lo que dice, se pasa un número en coma flotante de 32 bits y coge la mitad de use número, entonces coge esos bits y los trata en formato integer en vez de float, nosequé historias de un bit a la derecha y entonces le resta la constante de mi abuela en bicicleta.

Pero para mí sigue siendo todo algún tipo de magia negra oscura.

edit2: Usando a chatGPT:
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
i tiene un valor que es el que quieren calcular la raiz inversa cuadrada.
La constante ya lo hemos explicado.
i >> 1 lo que hace es desplazar un bit a la derecha el valor de i, como está en binario, esto equivale a dividirlo por 2

spoiler

Por tanto, constante - i/2 --> un número cercano a la raiz cuadrada inversa de i.

2 respuestas
eisenfaust

si que se nota la burbuja porque solo se habla de salarios en este thread

a ver si revienta todo para volver a tener conversaciones sobre desarrollo y tecnologia como hace aproximadamente una decada hhheheh

Fyn4r

#52569

Pero para mí sigue siendo todo algún tipo de magia negra oscura.

Por eso en su caso sí se puede decir que es una línea que ha cambiado el mundo y tú solo puedes memear con un hola mundo

1 1 respuesta
Seyriuu

#52571 No me malinterpretes, yo no pongo en duda que esa línea funcione y haga lo que dice que hace.

Yo quería entenderlo porque para empezar i >> 1 no si quiera tenía claro qué hacía (ahora lo sé, desplazar un bit a la derecha el valor de i), y tampoco entendía el papel de la constante esa.

1 respuesta
B

#52572 El código en sí lo que hace es una única iteración del método de Newton sobre la función 1 / x ** 2 - c, con c = número para el que quieres saber la inversa de la raíz cuadrada, de hecho con la fórmula en la mano, si f(x) = 1 / x ** 2 - c

x' = x - f(x) / f'(x) es (x/2) * (3 - c * x ** 2), que es la línea

 y * ( threehalfs - ( x2 * y * y ) )

La fumada con bits es para encontrar un x inicial tal que con una única iteración ya te acerques lo bastante al resultado.

Siendo francos no se cómo cojones se le ocurrió a nadie tal número. La resta de i como integer shiftado a la derecha se me ocurre que es porque en IEE754 los números están representado como exponente y mantisa, y con eso divides el exponente por 2, lo cual parece bastante razonable.

La constante mágica ya sí que confieso que se escapa a mi entendimiento, en su día en la uni intenté entender por qué y no llegué muy lejos xD

La idea de la inversa entiendo que es porque la puedes calcular dividiendo únicamente por constantes, que se puede expresar como un producto, y así te ahorras dividir en coma flotante, que es bastante lento, y en la época probablemente te jodía la performance varios órdenes de magnitud.

2 1 respuesta
Dr_Manhattan

¿Así que saber derivar servía para algo? Vaya, desu tenía razón

2 respuestas
B

#52574 Para dar trabajo a profesores y escribir posts en foros sobre trozos de código de 1999, tampoco te creas

1
Seyriuu

#52573 sí, lo del bit a la derecha es precisamente por eso, desplazas bit a la derecha y obtienes la mitad del número.

La constante según he leído la sacaron a base de prueba y error y fue el número que más se les acercó.

1 respuesta
Dr_Manhattan
#52576Seyriuu:

desplazas bit a la derecha y obtienes la mitad del número.

y sabes por qué se hace así?

O por qué en esta parte del código multiplica por 0.5 para dividir entre 2?

long i;
float x2, y;
const float threehalfs = 1.5F;

x2 = number * 0.5F;
1 respuesta
Seyriuu

#52577 lo de desplazar a la derecha lo he explicado en un post previo, sacado de chatgpt.

Si tienes 110 (6) y desplazas a la derecha tienes 11 (3) y sil vuelves a hacer tienes 1 (1).

Lo otro que comentas, no, no lo sé, supongo que pretende sacar la mitad. El que lo ha explicado proyectando mucho conocimiento ha sido @sergiorg

1 respuesta
r2d2rigo

No me hacía falta ni entrar al link para saber que ibais a hablar de la fast inverse square root.

Que por cierto #52566, no lo invento carmack, ya había algún uso previo de ella pero no se conoce su autoria.

EDIT: pues si se conoce según Wikipedia, un tal greg Walsh.

Dr_Manhattan

#52578
Te lo digo por esto que has escrito:

#52569Seyriuu:

Yo también puedo poner un hola mundo y decir que de forma mágica calcula si te has comido las tres pollas anuales o aún no.

O a lo mejor es que vais de desus de la vida pero tampoco sabéis explicar esa línea de código, no pasa nada.

Eres muy soberbio, lo de preguntar a chat gpt es lo que tendrías que haber hecho antes de soltar eso, o bien, haber preguntado qué era lo que no se entendía.

Nos quejamos muchas veces de que aquí se habla de chorradas, hoy he leído sobre este tema (que no conocía) y me ha parecido interesante traerlo. Luego claro, viene el ofendido de turno a llamar tontos a los demás cuando ni se ha leído el artículo entero

1 respuesta
Seyriuu

#52580 pero mira el contexto:
1) usuario pone la línea magica que según el texto hace tal
2) yo pregunto eso como funciona
3) se me responde diciendo que ya lo pone en el artículo
4) yo hago una parodia del artículo para explicar que el artículo no explica la línea de código, explica el resultado final

Desde mi perspectiva, los soberbios habéis sido vosotros, yo desde un primer momento he dejado claro que NO sabía como funcionaba esa línea de código y posteriormente he investigado usando wikipedia y chatgpt.

Y sí me había leído el artículo, que nunca llega a explicar qué hacía esa línea en concreto, si no el resultado final.

1 1 respuesta
Dr_Manhattan

#52581 tu pregunta inicial, si la lees, es como que has visto el titular, la línea de código y has parado ahí, igual no es así, pero la duda no está bien planteada como para que alguien te respondiese en serio

2 respuestas
Seyriuu

#52582 no lo estaría, pero la duda original era entender qué hacía esa línea de código (restar una constante a la mitad de un valor, lo cual es el resultado aproximado de su raiz cuadrada inversa) tampoco se merecía la respuesta que ha tenido.

No podemos ser rudos y luego quejarnos de que nos contestan con rudeza, la verdad.

1 respuesta
B

#52582 Pero si ese artículo no explica absolutamente nada.

Y el hecho de que hayas puesto esto tras responder yo

#52574Dr_Manhattan:

¿Así que saber derivar servía para algo? Vaya, desu tenía razón

Me da a entender que tú tampoco sabías lo que hacía esa función, y que de hecho ni te acordabas del método de Newton.

A mí también me ha parecido bastante soberbio e innecesario linkar un artículo en un post en el que no explicas nada, que alguien pregunte e intente indagar algo más y contestes con

#52567Dr_Manhattan:

si no te has molestado en leerlo estás que me voy a molestar yo en explicártelo. En el artículo lo dicen

Cuando ni tan solo es cierto.

Para un tema que me medio interesa que no son sueldos o lo bien que se vive en Asia en comparación con Europa y se tiene que enmerdar con el tono prepotente habitual.

1 1 respuesta
Dr_Manhattan

#52583 te pido disculpas si he estado borde contigo, un saludo

1 1 respuesta
Seyriuu

#52585 no te preocupes, yo también he estado algo fuera de tono

1
Dr_Manhattan
#52584sergioRG:

Me da a entender que tú tampoco sabías lo que hacía esa función, y que de hecho ni te acordabas del método de Newton.

lo he mirado después de leer el artículo en otra página que lo explican bien y cómo llegan al método de newton, pero no lo he puesto para que nadie me saltase al cuello la verdad

Eran estos dos liks:

https://breq.dev/2021/03/17/5F3759DF

https://betterexplained.com/articles/understanding-quakes-fast-inverse-square-root/

1 respuesta
B

#52587 Por qué alguien te iba a saltar al cuello por poner algo de dev en un subforo de devs?

Casi que prefiero leer cosas así que los cuatro humble brags habituales de turno.

4 1 respuesta
Dr_Manhattan

#52588 porque estamos donde estamos, además lo explican matemáticamente etc y me conozco a más de uno de por aquí

Seyriuu

Yo creo que en general el ambiente de este hilo es hostil.

Que si viene alguien con una duda más junior o simplemente no sabe una cosa la respuesta que suele recibir no suele ser muy buena.

Estoy de acuerdo con lo del humble bragging y discusiones prolongadas que no tienen nada que ver con el dev.

Igual deberíamos plantearnos todos si queremos un hilo que trate temas dev (con su ocasional desvío) o queremos un hilo donde la gente no escriba porque algunas personas parecen esperar una oportunidad para lucirse despreciando a los demás

11 4 respuestas