Funcion matematica log()

Started by kim-elet-o, November 18, 2007, 11:03:25 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

kim-elet-o

Hola SplinterGu, tras leer post reciente de HaCkZJuaNN  en Divsite sobre la falta de la funcion Log() en el Fenix, he pensado que posiblemente el Bennu halla heredado esta falta, y si es asi, no estaria mal poner esta funcion de logaritmos, por que es bastante usual, aaaah si no es abusar en peticiones, una funcion de logaritmos neperianos tampoco seria muy descabellado, saludos.

|/
|\im-elet-o el yayo programador.

SplinterGU

Puedo agregar todas estas:

Function: double exp (double x)

The exp function returns the value of e (the base of natural logarithms) raised to power x.

The function fails, and sets errno to ERANGE, if the magnitude of the result is too large to be representable.

Function: double log (double x)

This function returns the natural logarithm of x.  exp (log (x)) equals x, exactly in mathematics and approximately in C.

The following errno error conditions are defined for this function:

EDOM

The argument x is negative.  The log function is defined mathematically to return a real result only on positive arguments.


ERANGE

The argument is zero.  The log of zero is not defined. 

Function: double log10 (double x)

This function returns the base-10 logarithm of x.  Except for the different base, it is similar to the log function.  In fact, log10 (x) equals log (x) / log (10).

Function: double pow (double base, double power)

This is a general exponentiation function, returning base raised to power.

The following errno error conditions are defined for this function:

EDOM

The argument base is negative and power is not an integral value.  Mathematically, the result would be a complex number in this case.


ERANGE

An underflow or overflow condition was detected in the result. 

Function: double sqrt (double x)

This function returns the nonnegative square root of x.

The sqrt function fails, and sets errno to EDOM, if x is negative.  Mathematically, the square root would be a complex number.

Function: double cbrt (double x)

This function returns the cube root of x.  This function cannot fail; every representable real value has a representable real cube root.

Function: double hypot (double x, double y)

The hypot function returns sqrt (x*x + y*y).  (This is the length of the hypotenuse of a right triangle with sides of length x and y, or the distance of the point (x, y) from the origin.)  See also the function cabs in Absolute Value.

Function: double expm1 (double x)

This function returns a value equivalent to exp (x) - 1.  It is computed in a way that is accurate even if the value of x is near zero--a case where exp (x) - 1 would be inaccurate due to subtraction of two numbers that are nearly equal.

Function: double log1p (double x)

This function returns a value equivalent to log (1 + x).  It is computed in a way that is accurate even if the value of x is near zero.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Obviando las que ya existen... como POW
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

Con eso bastaría, ya que si se quiere calcular un logaritmo en otra base se puede calcular usando los neperianos. Sólo hay que dividir el log neperiano del número por el log neperiano de la base...

Drumpi

A mi tambien se me vino a la cabeza que sería interesante crear una librería con funciones matemáticas más complejas, basadas en series de Tailor (ultimamente ando obsesionado con el cálculo numérico, porque es una asignatura que se me ha atragantado desde hace años). Lo que no se es si actualmente se hacen así o si son más rápidas de calcular, pero creo que para aproximaciones estaría bien (creo que usando series de grado 4 o 5 se tiene una muy buena aproximación con error inferior al 0,1%)
Si se necesita ayuda para hacerla y no hay prisa podría intentarlo, a ver si hago algo serio de una vez :P
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

kim-elet-o

Quizas lo que vaya a decir sea una tonteria, se podrian separar las funciones matematicas en dos modulos:

1º Funciones matematicas Basicas: en las cuales entrarian las funciones clasicas sin(x), cos(x), sqrt(x), log(x), ect.

2º Funciones matematicas complejas: series de tailor, transformaciones de parametricas a polares y viceversa, manejo de matrices, ect (aqui donde mis conocimientos matematicos acaban). Ademas este modulo seria interesante donde colaborara mas la comunidad fenix/bennu.


|/
|\im-elet-o el yayo programador.

Kel

#6
ya que nos ponemos se podrian añadir todas las funciones trigonometricas que faltan ... :D

El tema de operaciones con matrices la verdad esque nose, porque salvando determinantes programar inversas de matrices y todo el tema es bastante mas complicado de lo que parece aunque habrán algoritmos digo yo. :'( y bueno hay algunas librerias por ahi libres de calculo numerico (lapack, numpy)etc

Se me ocurre que incluso implementando eso ya para dejar el modulo bastante util en si se podria añadir una pequeña libreria de vectores (dot, vectorial, modulo vector , y poco mas) y algo de geometria aunque no se si ya con las funciones normales de lineas, circulos etc basta... (hablo en terminos algebraicos para hayar lineas y planos en el espacio no de pintar).

Ya si se pide algo mas avanzado mas que bennu esto iba a parecer el maple, en mi humilde opinion.

podria llamarse modulo math o algo asi... el problema es que este modulo solo podria hacerse en C me equivoco? lo digo porque asi podria colaborar mas gente y no dejar todo el trabajo a splinter... o al menos enviarle a el los cambios ya hechos.

con respecto a lo de las parametricas y polares y las transformaciones, no es mas facil hacer las transformaciones en otro programa y trabajar con las transformaciones ya hechas? (digo yo)

SplinterGU

Me parece que seria lo ideal hacerlo en 2 modulos... las basicas y  "otras" que no se como se llamarian...
Si, los modulos irian en C, la math ya existe y esa es la de modulos basicos... el modulo de mathcomplex (por ponerle un nombre) podria ser un modulo que desarrolloen los usuarios...
Soy partidario de que Bennu se haga potente en base de "contrib"s... pues como muchos sabran yo no dispongo de mucho tiempo ultimamente y por eso se esta retrazando la primera version... tambien por eso, no quiero desviarme mucho mas de los modulos basicos... pero repito que mi apuesta fuerte es que el proyecto se forme con la colaboracion de todos... y de muchos "contrib"s...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec


Es una gran idea tener dos modulos para las funciones matematicas.