Cómo dividir en neón intrínseca por un número de flotador

En primer lugar, lo siento por mi inglés no es perfecto, pero voy a tratar de explicar mi problema todo lo que puedo.

Un poco de fondo de lo que estoy haciendo es procesar una imagen por cuatro píxeles en el momento, esto en un armv7 para una aplicación de Android.

Quiero dividir un vector float32x4_t por otro vector, pero que los números en él son variables y alrededor de 0.7 a 3.85 más menos, y la única manera que busco dividir es con cambio a la derecha, pero que para un número 2 ^ n, Ayudar a conseguir esto.

También soy nuevo en esto, así que cualquier comentario es bienvenido, o si necesita más información acerca de lo que estoy haciendo voy a tratar de hacer mi mejor esfuerzo para responder cualquier pregunta.

Ok intentaré explicarlo con un ejemplo:

Cómo puedo realizar estas instrucciones con neon intrinsics

float32x4_t a = {25.3,34.1,11.0,25.1}; float32x4_t b = {1.2,3.5,2.5,2.0}; // somthing like this float32x4 resultado = a/b; // {21.08,9.74,4.4,12.55} 

Sólo recuerda que b puede cambiar entre intervalos porque todo esto está en un para que alteren el vector b

El conjunto de instrucciones NEON no tiene una división de punto flotante.

Si sabes a priori que tus valores no están mal escalados y no necesitas redondear correctamente (esto es casi seguro si estás haciendo un procesamiento de imágenes), puedes usar una estimación recíproca, un paso de refinamiento y multiplicar De una división:

 // get an initial estimate of 1/b. float32x4_t reciprocal = vrecpeq_f32(b); // use a couple Newton-Raphson steps to refine the estimate. Depending on your // application's accuracy requirements, you may be able to get away with only // one refinement (instead of the two used here). Be sure to test! reciprocal = vmulq_f32(vrecpsq_f32(b, reciprocal), reciprocal); reciprocal = vmulq_f32(vrecpsq_f32(b, reciprocal), reciprocal); // and finally, compute a/b = a*(1/b) float32x4_t result = vmulq_f32(a,reciprocal); 
  • Error durante la interconexión de código C con bibliotecas dinámicas
  • OpenGL en Android usando sólo C ++
  • ¿Cómo enlazar con bibliotecas estáticas para Android?
  • ¿Puedo obtener un seguimiento de pila de C ++ cuando se bloquea la aplicación de Android?
  • Corriendo R's C Core Only
  • Error en la negociación de Android de la señal R Native Android
  • Cómo construir impulso para android como biblioteca compartida con c + + 11 de apoyo
  • Fopen en el código JNI C falla en el archivo colocado en la carpeta de activos en la aplicación android
  • Cómo inyectar la biblioteca en el proceso Android zygote?
  • Conversión YUV a RGB y visualización utilizando opengl es 2.0 de android ndk usando shaders
  • Envío de MultipartEntity mediante HttpURLConnection
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.