00001 /**********************************************************/ 00002 /*/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/ 00003 /* 00004 Copyright: 1994 - Grupo de Voz (DAET) ETSII/IT-Bilbao 00005 00006 Nombre fuente................ SPL0.C 00007 Nombre paquete............... SPL 00008 Lenguaje fuente.............. C (Borland C/C++ 3.1) 00009 Estado....................... Completado 00010 Dependencia Hard/OS.......... - 00011 Codigo condicional........... NDEBUG 00012 00013 Codificacion................. Borja Etxebarria 00014 00015 Version dd/mm/aa Autor Proposito de la edicion 00016 ------- -------- -------- ----------------------- 00017 1.1.1 30/07/95 Borja scope funciones explicito 00018 1.1.0 08/12/94 Borja revision general (tipos,idx,nel,tnel...) 00019 1.0.0 06/07/93 Borja Codificacion inicial. 00020 00021 ======================== Contenido ======================== 00022 Evaluacion de funciones diversas. Por ahora, solo ha sido 00023 necesario implementar la funcion de Bessel de primera 00024 especie y orden 0. 00025 00026 Definir NDEBUG para desconectar la validacion de parametros 00027 con assert(). No definir este simbolo mientras se depuren 00028 aplicaciones, ya que aunque las funciones son algo mas lentas, 00029 el chequeo de validacion de parametros resuelve muchos problemas. 00030 =========================================================== 00031 */ 00032 /*/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/ 00033 /**********************************************************/ 00034 00035 #include "spli.h" 00036 00037 /**********************************************************/ 00038 /* evalua y {devuelve} la funcion modificada de Bessel de 00039 primera especie y de orden 0 en el punto {x}. El resultado 00040 tiene una precision minima dada por la constante BESSEL_PRECISION, 00041 definida en SPL.H 00042 00043 Ref: 00044 . Manual de formulas y tablas matematicas. 00045 . Murray R. Spiegel 00046 . Schaum - McGraw-Hill 00047 */ 00048 00049 PUBLIC SPL_FLOAT XAPI bessel_I0( SPL_FLOAT x ) 00050 { 00051 SPL_FLOAT sum, coef, i; 00052 00053 sum = i = 0.0; 00054 coef = 1.0; 00055 x *= x; 00056 do { 00057 sum += coef; 00058 i += 2.0; 00059 coef *= x/(i*i); 00060 } while (coef/sum>BESSEL_PRECISION); 00061 00062 return (sum + coef); 00063 } 00064 00065 /**********************************************************/ 00066