/*
    This file is part of the FElt finite element analysis package.
    Copyright (C) 1993-2000 Jason I. Gobat and Darren C. Atkinson

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/************************************************************************
 * File:	functab.h						*
 *									*
 * Description:	This file contains the table containing the names and	*
 *		addresses of each intrinsic function.			*
 ************************************************************************/

# ifndef _FUNCTAB_H
# define _FUNCTAB_H
# include "help.h"
# include "write.h"
# include "fefunc.h"
# include "mathfunc.h"
# include "miscfunc.h"
# include "predicate.h"
# include "matrixfunc.h"

# define NumIntrinsics (sizeof (functab) / sizeof (*functab))

static struct {
    char *name;
    int   num_args;
    int (*func) PROTO ((int));
} functab [ ] = {

    /* Math library functions */

    {"abs",   1, fabs_func},
    {"ceil",  1, ceil_func},
    {"cos",   1, cos_func},
    {"exp",   1, exp_func},
    {"fabs",  1, fabs_func},
    {"floor", 1, floor_func},
    {"fmod",  2, fmod_func},
    {"hypot", 2, hypot_func},
    {"log",   1, log_func},
    {"log10", 1, log10_func},
    {"pow",   2, pow_func},
    {"sin",   1, sin_func},
    {"sqrt",  1, sqrt_func},
    {"tan",   1, tan_func},


    /* Matrix library functions */

    {"chol",    1, chol_func},
    {"cols",	1, cols_func},
    {"columns",	1, cols_func},
    {"compact",	1, compact_func},
    {"det",	1, det_func},
    {"eig",	2, eig_func},
    {"eye",	2, eye_func},
    {"inv",     1, inv_func},
    {"lu",	4, lu_func},
    {"norm",	2, norm_func},
    {"ones",	2, ones_func},
    {"qr",	3, qr_func},
    {"rand",	3, rand_func},
    {"rows",	1, rows_func},
    {"zeros",	2, zeros_func},
    {"zeroes",	2, zeros_func},


    /* Predicate functions */

    {"any?",	   1, anyp_func},
    {"compact?",   1, compactp_func},
    {"every?",	   1, everyp_func},
    {"matrix?",	   1, matrixp_func},
    {"null?",	   1, nullp_func},
    {"scalar?",	   1, scalarp_func},
    {"symmetric?", 1, symmetricp_func},


    /* Miscellaneous functions */

    {"concat",  2, concat_func},
    {"eval",	1, eval_func},
    {"exit",	1, exit_func},
    {"help",	1, help_func},
    {"history",	1, history_func},
    {"include",	1, include_func},
    {"load",	1, load_func},
    {"read",	0, read_func},
    {"reads",	0, reads_func},
    {"save",	1, save_func},
    {"system",	1, system_func},
    {"type",	1, type_func},
    {"write",  -1, write_func},
    {"writes", -1, writes_func},


    /* Finite element functions */

    {"area",   1, area_func},
    {"felt",   1, felt_func},
    {"length", 1, length_func},
    {"volume", 1, volume_func},

    {"add_definition",	  9, add_definition_func},
    {"remove_definition", 1, remove_definition_func},

    {"assemble",	     2, assemble_func},
    {"clear_nodes",	     0, clear_nodes_func},
    {"compute_modes",	     3, compute_modes_func},
    {"compute_stresses",     1, compute_stresses_func},
    {"construct_forces",     1, construct_forces_func},
    {"find_dofs",	     0, find_dofs_func},
    {"global_dof",	     2, global_dof_func},
    {"integrate_hyperbolic", 3, integrate_hyperbolic_func},
    {"integrate_parabolic",  2, integrate_parabolic_func},
    {"local_dof",	     2, local_dof_func},
    {"remove_constrained",   1, remove_constrained_func},
    {"renumber_nodes",	     0, renumber_nodes_func},
    {"restore_numbers",	     1, restore_numbers_func},
    {"set_up",		     2, set_up_func},
    {"solve_displacements",  2, solve_displacements_func},
    {"zero_constrained",     1, zero_constrained_func},
};

# endif /* _FUNCTAB_H */


syntax highlighted by Code2HTML, v. 0.9.1