/*
* surf - visualizing algebraic curves and algebraic surfaces
* Copyright (C) 1996-1997 Friedrich-Alexander-Universitaet
* Erlangen-Nuernberg
* 1997-2000 Johannes Gutenberg-Universitaet Mainz
* Authors: Stephan Endrass, Hans Huelf, Ruediger Oertel,
* Kai Schneider, Ralf Schmitt, Johannes Beigel
*
* 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.
*
*/
/* ------------------------------------------------------------------------- */
/* monomarith.h: monomial */
/* ------------------------------------------------------------------------- */
#ifndef MONOMARITH_H
#define MONOMARITH_H
/* ------------------------------------------------------------------------- */
/* */
/* Define struct for: */
/* */
/* kx ky */
/* a*x *y */
/* */
/* ------------------------------------------------------------------------- */
typedef struct
{
double a; /* Coefficient */
int kx; /* Exponent of x */
int ky; /* Exponent of y */
} monxy;
/* ------------------------------------------------------------------------- */
/* */
/* Define struct for: */
/* */
/* kx ky kz */
/* a*x *y *z */
/* */
/* ------------------------------------------------------------------------- */
typedef struct
{
double a; /* Coefficient */
int kx; /* Exponent of x */
int ky; /* Exponent of y */
int kz; /* Exponent of z */
} monxyz;
/* ------------------------------------------------------------------------- */
/* global data */
/* ------------------------------------------------------------------------- */
extern monxy NULLMONXY;
extern monxyz NULLMONXYZ;
extern monxy ONEMONXY;
extern monxyz ONEMONXYZ;
/* ------------------------------------------------------------------------- */
/* function headers */
/* ------------------------------------------------------------------------- */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* ------------------------------------------------------------------------- */
/* constructors and destructors and copy */
/* ------------------------------------------------------------------------- */
monxyz *new_monxyz ( int );
monxyz *renew_monxyz ( monxyz*,int );
monxyz *delete_monxyz( monxyz* );
void copy_monxyz ( monxyz*,monxyz*,int );
/* ------------------------------------------------------------------------- */
/* compare functions */
/* ------------------------------------------------------------------------- */
int monxyz_power_equal( monxyz*,monxyz* );
/* ------------------------------------------------------------------------- */
/* arithmetics */
/* ------------------------------------------------------------------------- */
void monxyz_add_self ( monxyz*,monxyz* );
monxyz monxyz_mult ( monxyz,monxyz* );
void monxyz_mult_self ( monxyz*,monxyz* );
monxyz monxyz_mult_double ( monxyz,double );
void monxyz_mult_double_self( monxyz*,double );
monxyz monxyz_div_double ( monxyz,double );
void monxyz_div_double_self ( monxyz*,double );
monxyz monxyz_power ( monxyz,int );
monxyz monxyz_neg ( monxyz );
void monxyz_neg_self ( monxyz* );
monxyz monxyz_dx ( monxyz );
void monxyz_dx_self ( monxyz* );
monxyz monxyz_dx_n ( monxyz,int );
void monxyz_dx_n_self ( monxyz*,int );
monxyz monxyz_dy ( monxyz );
void monxyz_dy_self ( monxyz* );
monxyz monxyz_dy_n ( monxyz,int );
void monxyz_dy_n_self ( monxyz*,int );
monxyz monxyz_dz ( monxyz );
void monxyz_dz_self ( monxyz* );
monxyz monxyz_dz_n ( monxyz,int );
void monxyz_dz_n_self ( monxyz*,int );
monxyz monxyz_dw ( monxyz,int );
void monxyz_dw_self ( monxyz*,int );
monxyz monxyz_dw_n ( monxyz,int,int );
void monxyz_dw_n_self ( monxyz*,int,int );
monxyz monxyz_dvector ( monxyz,int,int,int,int,int );
void monxyz_dvector_self ( monxyz*,int,int,int,int,int );
monxyz monxyz_dmonxyz ( monxyz,int,monxyz*,int );
void monxyz_dmonxyz_self ( monxyz*,int,monxyz*,int );
/* ------------------------------------------------------------------------- */
/* conversions */
/* ------------------------------------------------------------------------- */
monxyz int2monxyz ( int );
monxyz double2monxyz( double );
monxyz atom ( char* );
/* ------------------------------------------------------------------------- */
/* output */
/* ------------------------------------------------------------------------- */
void monxyz_print( monxyz* );
/* ------------------------------------------------------------------------- */
/* end of function headers */
/* ------------------------------------------------------------------------- */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* MONOMARITH_H */
/* ------------------------------------------------------------------------- */
/* end of file: monomarith.h */
/* ------------------------------------------------------------------------- */
syntax highlighted by Code2HTML, v. 0.9.1