/* $Header: /users/server/faculty/chow/mci/netrestore/src/MFRREACT/RCS/rmath.h,v 1.1 1993/12/28 02:37:58 chow Exp $ */ /* Header for module math, generated by p2c */ #ifndef MATH_H #define MATH_H #ifdef MATH_G # define vextern #else # define vextern extern #endif /* p2c: math.pas, line 6: * Note: Turbo Pascal conditional compilation directive was ignored [218] */ /*$IFDEF DOUBLE_PRECISION*/ /*$ELSE*/ /* p2c: math.pas, line 9: * Note: Turbo Pascal conditional compilation directive was ignored [218] */ /*$IFDEF SINGLE_PRECISION*/ /* p2c: math.pas, line 10: * Warning: Symbol 'FLOAT' was already defined [220] */ /*$ELSE*/ /* p2c: math.pas, line 12: * Warning: Symbol 'FLOAT' was already defined [220] */ /*$ENDIF*/ /*$ENDIF*/ typedef union vector { struct { double i, j, k; } U1; double a[3]; } vector; typedef struct state_vector { vector r, v; } state_vector; typedef union dir_cosines { struct { vector row1, row2, row3; } U1; double m[3][3]; } dir_cosines; extern Void vector_init PP((double i, double j, double k, vector *result)); extern boolean vector_null_check PP((vector *v)); extern boolean vector_equal_check PP((vector *v1, vector *v2)); extern Void vector_negate PP((vector *v, vector *result)); extern double vector_mag PP((vector *v)); extern Void vector_unit PP((vector *v, vector *result)); extern Void vector_cross PP((vector *v1, vector *v2, vector *result)); extern double vector_dot PP((vector *v1, vector *v2)); extern Void vector_add PP((vector *v1, vector *v2, vector *result)); extern Void vector_subtract PP((vector *v1, vector *v2, vector *result)); extern Void dir_cosines_init PP((vector *v1, vector *v2, vector *v3, dir_cosines *dc)); extern Void dir_cosines_invert PP((dir_cosines *dc, dir_cosines *result)); extern Void dir_cosines_calc PP((vector *ivec, vector *up, dir_cosines *dc)); extern Void coordinate_transformation PP((vector *v, dir_cosines *dc, vector *result)); extern double modulo PP((double x, double y)); extern double pos_modulo PP((double x, double y)); extern double power PP((double x, double y)); extern double tan_ PP((double x)); extern double arcsin_ PP((double x)); extern double arccos_ PP((double x)); extern double arctan2 PP((double sinx, double cosx)); extern double sign PP((double a)); extern double bounds PP((double low, double value, double high)); extern long ibounds PP((long low, long value, long high)); extern double max PP((double v1, double v2)); extern double min PP((double v1, double v2)); extern long imax PP((long v1, long v2)); extern long imin PP((long v1, long v2)); extern Void swap_ PP((double *a, double *b)); #undef vextern #endif /*MATH_H*/ /* End. */