Introducción al entorno de ejecución
====================================

El fichero maxima-init.mac se carga automáticamente cada vez que se empieza a ejecutar Maxima. Se puede utilizar maxima-init.mac para personalizar el entorno de Maxima. Si existe, maxima-init.mac se almacena normalmente en el directorio indicado por maxima_userdir, aunque puede estar alojado en cualquier otro directorio que esté al alcance de la función  file_search.

He aquí un ejemplo de fichero maxima-init.mac:

     setup_autoload ("specfun.mac", ultraspherical, assoc_legendre_p);
     showtime:all;

En este ejemplo, setup_autoload le dice a Maxima que cargue en memoria el fichero specfun.mac si cualquiera de las funciones ultraspherical o assoc_legendre_p es invocada pero todavía no está definida. De esta manera, no es necesario recordar cargar el fichero antes de llamar a las funciones.

La sentencia  showtime: all le dice a Maxima que haga una asignación a la variable showtime. El fichero  maxima-init.mac puede contener cualesquiera otras asignaciones o sentencias de Maxima.

Interrupciones
==============

El usuario puede detener un cómputo que esté consumiendo recursos excesivos con el carácter ^C (control-C). La acción que se sigue por defecto es la detención del cómputo y la impresión de otro prompt. En este caso, no será posible reiniciar la tarea interrumpida.

Si a la variable Lisp *debugger-hook* se le asigna nil haciendo

     :lisp (setq *debugger-hook* nil)

entonces tras recibir ^C, Maxima entra en el depurador de Lisp y el usuario podrá utilizar el depurador para inspeccionar el entorno Lisp. La tarea que haya sido interrumpida podrá reiniciarse escribiendo continue en el depurado de Lisp. La forma de volver a Maxima desde el depurador de Lisp, que no sea la de permitir la computación hasta la terminación de la tarea, dependerá de la versión de Lisp.

En sistemas Unix el carácter ^Z (control-Z) hace que Maxima deje de ejecutarse devolviendo el control al terminal del sistema. El comando fg hace que la ejecución de Maxima se reanude en el punto que lo dejó.

Funciones y variables para el entorno de ejecución
==================================================

 -- Declaración: feature

     Maxima trata con dos tipos diferentes de características, las del sistema y las correspondientes a expresiones matemáticas. Véase también status para información sobre características del sistema. Véanse asimismo features y featurep para información sobre características matemáticas.

     feature no es el nombre de una función ni de una variable.

 -- Función: featurep (A, F)

     Intenta determinar si el objeto A tiene la característica F en base a la información en la base de datos actual. De ser así, devuelve true, en caso contrario false.

     Nótese que featurep devuelve false cuando ni F ni la negación F puedan determinarse.

     La función featurep evalúa sus argumentos.

     Véanse también declare y features.

          (%i1) declare (j, even)$
          (%i2) featurep (j, integer);
          (%o2)                           true

 -- Variable del sistema: maxima_tempdir

     La variable maxima_tempdir almacena la ruta del directorio en el que Maxima crea ciertos ficheros temporales. En particular, los ficheros temporales para la realización de gráficos se guardan en maxima_tempdir.

     El valor que inicialmente toma esta variable es el directorio de inicio del usuario, si Maxima es capaz de localizarlo; en caso contrario, Maxima intenta encontrar un directorio que sea aceptable.

     A la variable maxima_tempdir se le puede asignar una cadena de caracteres con la ruta del directorio.

 -- Variable del sistema: maxima_userdir

     La variable maxima_userdir almacena la ruta del directorio en el que Maxima buscará ficheros Lisp y de Maxima. Maxima también busca en otros directorios, guardando las variables file_search_maxima y file_search_lisp la lista completa de búsqueda.

     El valor que inicialmente toma esta variable es el de un subdirectorio del directorio de inicio del usuario, si Maxima es capaz de localizarlo; en caso contrario, Maxima intenta encontrar un directorio que sea aceptable.

     A la variable maxima_userdir se le puede asignar una cadena de caracteres con la ruta del directorio. Sin embargo, cambiando el valor de la variable maxima_userdir no se alteran file_search_maxima ni file_search_lisp, cuyos contenidos se modifican mediante otro sistema.

 -- Función: room ()
 -- Función: room (true)
 -- Función: room (false)

     Presenta una descrpción del estado de almacenamiento y gestión de la pila en Maxima. La llamada room invoca a la función Lisp homónima.

       * room () prints out a moderate description.

       * room (true) prints out a verbose description.

       * room (false) prints out a terse description.

 -- Función: status (feature)
 -- Función: status (feature, PUTATIVE_FEATURE)
 -- Función: status (status)

     Devuelve información sobre la presencia o ausencia de ciertas características dependientes del sistema.

       * status (feature) devuelve una lista con características del sistema. Éstas incluyen la versión de Lisp, tipo de sistema operativo, etc. La lista puede variar de un Lisp a otro.

       * status (feature, PUTATIVE_FEATURE) devuelve true si PUTATIVE_FEATURE está en la lista de elementos retornados por status (feature) y false en otro caso. La función status no evalúa el argumento PUTATIVE_FEATURE. El operador comilla-comilla, '', permite la evaluación. Una característica cuyo nombre contenga un carácter especial debe ser suministrada como un argumento del tipo cadena alfanumérica. Por ejemplo, status (feature, "ansi-cl").

       * La llamada status (status) devuelve una lista con dos elementos [feature, status]. Los elementos feature y status son los dos argumentos que acepta la función status; no está claro si esta lista tiene algún interés adicional.

     La variable features contiene una lista de características que se aplican a expresiones matemáticas. Véanse features y featurep para más información.

 -- Función: time (%o1, %o2, %o3, ...)

     Devuelve una lista de los tiempos, en segundos, que fueron necesarios para calcular los resultados de las salidas %o1, %o2, %o3, .... Los tiempos devueltos son estimaciones hechas por Maxima del tiempo interno de computación. La función time sólo puede utilizarse para variables correspondientes a líneas de salida; para cualquier otro tipo de variables, time devuelve unknown.

     Hágase showtime: true para que Maxima devuelva el tiempo de ejecución de cada línea de salida.

 -- Función: timedate ()
     Devuelve una cadena alfanumérica con la hora y fecha actuales. La cadena tiene el formato HH:MM:SS Day, mm/dd/yyyy (GMT-n), donde los campos son: las horas, minutos, segundos, día de de la semana, mes, día del mes, año y número de horas de diferencia con respecto a la hora GMT.

     El valor que devuelve es una cadena Lisp.

     Ejemplo

          (%i1) d: timedate ();
          (%o1) 08:05:09 Wed, 11/02/2005 (GMT-7)
          (%i2) print ("timedate reports current time", d)$
          timedate reports current time 08:05:09 Wed, 11/02/2005 (GMT-7)

 -- Función: absolute_real_time ()

     Devuelve el número de segundos transcurridos desde la medianoche del 1 de enero de 1900 UTC. Este valor es un número entero positivo.

     Véanse también elapsed_real_time y elapsed_run_time.

     Ejemplo:

          (%i1) absolute_real_time ();
          (%o1)                      3385045277
          (%i2) 1900 + absolute_real_time () / (365.25 * 24 * 3600);
          (%o2)                   2007.265612087104

 -- Función: elapsed_real_time ()

     Devuelve los segundos (incluyendo fracciones de segundo) transcurridos desde que Maxima se inició (o reinició) la sesión de Maxima. Este valor es un decimal en coma flotante.

     Véanse también absolute_real_time y elapsed_run_time.

     Ejemplo:

          (%i1) elapsed_real_time ();
          (%o1)                       2.559324
          (%i2) expand ((a + b)^500)$
          (%i3) elapsed_real_time ();
          (%o3)                       7.552087

 -- Función: elapsed_run_time ()

     Devuelve una estimación en segundos (incluyendo fracciones de segundo) durante los cuales Maxima ha estado realizando cálculos desde que se inició (o reinició) la sesión actual. Este valor es un decimal en coma flotante.

     Véanse también absolute_real_time y elapsed_real_time.

     Ejemplo:

          (%i1) elapsed_run_time ();
          (%o1)                         0.04
          (%i2) expand ((a + b)^500)$
          (%i3) elapsed_run_time ();
          (%o3)                         1.26