¿Hay un algoritmo para encontrar la raíz cuadrada de un número dado usando operaciones bit a bit?Encontrar la raíz cuadrada de un número dado usando operaciones bit a bit
Respuesta
Hay this famous piece of code magic que calcula inversa raíz cuadrada con un poco de astucia muy inteligente. Se atribuyó erróneamente a John Carmack - here's a deeper dig en su origen. Tal vez es por eso que preguntas?
No recomendaría su uso, sin embargo. En las CPU modernas no puede vencer las instrucciones trascendentales dedicadas. Su habitual C++ intrínseca sqrt()
probablemente lo superaría sin lugar a dudas.
[Editar:] El artículo citado describe un método de derivación general para tales aproximaciones rápidas, y explícitamente dice 'Derivar un método similar para sqrt (x)' como un problema de tarea en sus líneas finales. Por lo tanto, debería poder rastrear su razonamiento e idear un método similar para sqrt (sin recíproco) directamente.
No ... Supongo que es por el bien de rendimiento? Si es así, lo mejor que probablemente obtendrás es usar una tabla de búsqueda. Si tiene la opción de trabajar con matemática entera (por ejemplo, trabajando con números multiplicados por 10, 100 o 1000 en lugar de flotantes), puede usar la rotación en modo bit para quitar rápidamente la precisión innecesaria y saltar a una tabla de búsqueda.
Wikipedia tiene un artículo sobre y un código también. Y another wikipedia article muestra un algoritmo (incluso para las raíces mayores que 2) que se puede implementar fácilmente en binario (por lo tanto, que implica la operación en bits).
Si desea adherirse solo a los operadores de bit a bit reales, debe implementar +
usando Ands, Ors, Xors, Nots ... Si desea hacerlo en flotadores de acuerdo con IEEE, necesita más trabajo (el primero el código en wikipedia podría usarse en la mantisa "directamente", probablemente bajo cierta restricción, y ajustar el exponente "en consecuencia" ... ¡hay que averiguar cómo, sin embargo!)
- 1. bit a bit algoritmo de raíz cúbica número entero
- 2. Implementación de ArrayDeque.allocateElements (operaciones bit a bit)
- 3. Lua - Operaciones lógicas de bit a bit
- 4. aplicaciones prácticas de operaciones bit a bit
- 5. Java - desplazamiento circular usando operaciones bit a bit
- 6. operaciones bit a bit en Postgres
- 7. operaciones bit a bit MySQL y filtrar
- 8. Operaciones bit a bit con enteros grandes
- 9. Operaciones bit a bit en el corto
- 10. operaciones bit a bit sobre no números
- 11. Reemplazar bit menos significativo con operaciones bit a bit
- 12. operaciones bit a bit de 48 bits en Javascript?
- 13. MySQL operaciones bit a bit, filtro de floración
- 14. Lista de Python para operaciones bit a bit
- 15. operaciones bit a bit en el vector <bool>
- 16. Operaciones bit a bit en cadenas grandes en PHP
- 17. ¿Las operaciones bit a bit siguen siendo prácticas?
- 18. Operaciones a nivel de bit en PHP?
- 19. Python: aritmética bit a bit sin signo de 32 bit
- 20. Comprobando si un número es positivo o negativo usando operadores bit a bit
- 21. GLSL: ¿por qué se reservan los operadores bit a bit? ¿Cuál es una buena alternativa al uso de operaciones bit a bit (operaciones de punto flotante que emulan bit a bit)
- 22. ¿Qué son los operadores bit a bit?
- 23. Banderas enumeración y operaciones bit a bit frente a “cadena de bits”
- 24. Indicadores de bit a bit en Delphi
- 25. Comparación bit a bit Java de un byte
- 26. Tipo de advertencia de conversión después de operaciones bit a bit en C
- 27. Cuál es la forma más eficiente de hacer operaciones bit a bit en una matriz C
- 28. PHP matriz bit a bit
- 29. ¿Cómo es la instrucción if y las operaciones bit a bit iguales en este ejemplo?
- 30. ¿Implementación de hardware de raíz cuadrada?
Probablemente te refieres a esto: "¿Hay algún algoritmo? para encontrar la raíz cuadrada de un número dado usando operaciones bit a bit "? – Pradyumna
intente ver esta página - http://www.azillionmonkeys.com/qed/sqroot.html#implementations –
sí, necesito un algoritmo para encontrar la raíz cuadrada usando operaciones bit a bit –