<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hola.<br><br>A ver si aquí hay alguien que me pueda ayudar con un tema peliagudo.<br><br>Estoy ampliando un progama en C++ que realiza ciertos cálculos. Yo para los míos necesito hacer una análisis de componentes principales (PCA), y para ello tiro de las bibliotecas TNT y JAMA para C.<br>La cosa es que al pedir los eigenvectores, muy ocasionalmente me devuelve una matriz con bastantes valores nan, creo yo que debido a la precisión, ya que salen valores muy bajos y a lo mejor los redondea cero y eso da problemas, pero no estoy muy seguro.<br>Según tengo entendido este comportamiento del C se tiene cuando no se activan las excepciones ante errores de punto flotante.<br>El programa que estoy extendiendo inicializa la FPU de esta manera:<br>int setfpu()<br>  {<br>    fpu_control_t
 t;<br><br>    _FPU_GETCW(fpu_current_state);<br>    t=(fpu_current_state&0xfcff) | 0x0000;<br>    _FPU_SETCW(t);<br>    return 0;<br>  }<br>Pero no encuentro por ahí el siginificado de la máscara de estas macros, aunque me imagino que desactiva las señales para que funcione más rápido, (algo primordial para la aplicación que realiza muchos cálculos).<br><br>No tengo muy claro como debo tratar este problema:<br><br>- ¿Debería mirar todos los valores de la matriz en busca de algún nan?. Las matrices son grandísimas.<br>- ¿Debería intentar activar las señales (aunque no se como) para capturarlas? Parece ser que esto hace que el coprocesador vaya muy lento ya que no trabaja en pipeline. Tampoco se realmente que señal debo capturar y como tratarla (imagino que será la SIGFPE).<br><br>Mi programa hace estos cálculos en un bucle for. Mi primer pensamiento sería activar las señales y que la función manejadora
 reste 1 al contador, volviendo a generar unos cálculos nuevos, ya que estos se basan en un número inicial aleatorio.<br><br>¿Podría alguien con conocimientos de estos temas a bajo nivel iluminarme un poco con este asunto?<br><br>Muchas gracias.<br></div></div><br>


      <hr size=1><br><font face="Verdana" size="-2">¡Descubre una nueva forma de obtener respuestas a tus preguntas!<br><a href="http://us.rd.yahoo.com/mail/es/tagline/answers/*http://es.answers.yahoo.com/;_ylc=X3oDMTEzNWwxbTZtBF9TAzIxMTQ3MTQxOTAEc2VjA01haWwEc2xrA3RhZ2xpbmVz">Entra en Yahoo! Respuestas</a>.<br></font></body></html>