GNU PROLOG with UTF8 support
Data Structures | Macros | Functions | Variables
math_supp.c File Reference
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include "engine_pl.h"
#include "bips_pl.h"
#include "engine_fd.h"
#include "bips_fd.h"
Include dependency graph for math_supp.c:

Data Structures

struct  Monom
 
struct  Poly
 
struct  NonLin
 

Macros

#define OBJ_INIT   Math_Supp_Initializer
 
#define MATH_SUPP_FILE
 
#define DEVELOP_TIMES_2
 
#define DELAY_CSTR_STACK_SIZE   1000
 
#define VARS_STACK_SIZE   100000
 
#define MAX_MONOMS   2000
 
#define MAX_COEF_FOR_SORT   100
 
#define PLUS_1   0
 
#define PLUS_2   1
 
#define MINUS_1   2
 
#define MINUS_2   3
 
#define TIMES_2   4
 
#define DIV_2   5
 
#define POWER_2   6
 
#define MIN_2   7
 
#define MAX_2   8
 
#define DIST_2   9
 
#define QUOT_2   10
 
#define REM_2   11
 
#define QUOT_REM_3   12
 
#define NB_OF_OP   13
 
#define DC_X2_EQ_Y   0
 
#define DC_XY_EQ_Z   1
 
#define DC_DIV_A_Y_EQ_Z   2
 
#define DC_DIV_X_A_EQ_Z   3
 
#define DC_DIV_X_Y_EQ_Z   4
 
#define DC_ZERO_POWER_N_EQ_Y   5
 
#define DC_A_POWER_N_EQ_Y   6
 
#define DC_X_POWER_A_EQ_Y   7
 
#define DC_MIN_X_A_EQ_Z   8
 
#define DC_MIN_X_Y_EQ_Z   9
 
#define DC_MAX_X_A_EQ_Z   10
 
#define DC_MAX_X_Y_EQ_Z   11
 
#define DC_ABS_X_MINUS_A_EQ_Z   12
 
#define DC_ABS_X_MINUS_Y_EQ_Z   13
 
#define DC_QUOT_REM_A_Y_R_EQ_Z   14
 
#define DC_QUOT_REM_X_A_R_EQ_Z   15
 
#define DC_QUOT_REM_X_Y_R_EQ_Z   16
 
#define New_Tagged_Fd_Variable   (Tag_REF(Pl_Fd_New_Variable()))
 
#define New_Poly(p)   ((p).c = (p).nb_monom = 0)
 
#define Add_Cst_To_Poly(p, s, w)   (p->c += s * w)
 

Functions

static Bool Load_Left_Right_Rec (Bool optim_eq, WamWord le_word, WamWord re_word, int *mask, WamWord *c_word, WamWord *l_word, WamWord *r_word)
 
static int Compar_Monom (Monom *m1, Monom *m2)
 
static Bool Load_Term_Into_Word (WamWord e_word, WamWord *load_word)
 
static WamWord Push_Delayed_Cstr (int cstr, WamWord a1, WamWord a2, WamWord a3)
 
static void Add_Monom (Poly *p, int sign, PlLong a, WamWord x_word)
 
static Bool Add_Multiply_Monom (Poly *p, int sign, Monom *m1, Monom *m2)
 
static Bool Normalize (WamWord e_word, int sign, Poly *p)
 
static Bool Load_Poly (int nb_monom, Monom *m, WamWord pref_load_word, WamWord *load_word)
 
static Bool Load_Poly_Rec (int nb_monom, Monom *m, WamWord load_word)
 
static Bool Load_Delay_Cstr_Part (void)
 
static void Math_Supp_Initializer (void)
 
Bool Pl_Load_Left_Right (Bool optim_eq, WamWord le_word, WamWord re_word, int *mask, PlLong *c, WamWord *l_word, WamWord *r_word)
 
Bool Pl_Term_Math_Loading (WamWord l_word, WamWord r_word)
 
static Bool Load_Left_Right_Rec (Bool optim_eq, WamWord le_word, WamWord re_word, int *mask, PlLong *c, WamWord *l_word, WamWord *r_word)
 
Bool Pl_Fd_Math_Unify_X_Y (WamWord x, WamWord y)
 
Bool pl_x_eq_c (WamWord x, WamWord c)
 

Variables

static WamWord arith_tbl [NB_OF_OP]
 
static NonLin delay_cstr_stack [DELAY_CSTR_STACK_SIZE]
 
static NonLindelay_sp
 
static WamWord vars_tbl [VARS_STACK_SIZE]
 
static WamWordvars_sp
 
static Bool sort
 

Macro Definition Documentation

#define Add_Cst_To_Poly (   p,
  s,
 
)    (p->c += s * w)
#define DC_A_POWER_N_EQ_Y   6
#define DC_ABS_X_MINUS_A_EQ_Z   12
#define DC_ABS_X_MINUS_Y_EQ_Z   13
#define DC_DIV_A_Y_EQ_Z   2
#define DC_DIV_X_A_EQ_Z   3
#define DC_DIV_X_Y_EQ_Z   4
#define DC_MAX_X_A_EQ_Z   10
#define DC_MAX_X_Y_EQ_Z   11
#define DC_MIN_X_A_EQ_Z   8
#define DC_MIN_X_Y_EQ_Z   9
#define DC_QUOT_REM_A_Y_R_EQ_Z   14
#define DC_QUOT_REM_X_A_R_EQ_Z   15
#define DC_QUOT_REM_X_Y_R_EQ_Z   16
#define DC_X2_EQ_Y   0
#define DC_X_POWER_A_EQ_Y   7
#define DC_XY_EQ_Z   1
#define DC_ZERO_POWER_N_EQ_Y   5
#define DELAY_CSTR_STACK_SIZE   1000
#define DEVELOP_TIMES_2
#define DIST_2   9
#define DIV_2   5
#define MATH_SUPP_FILE
#define MAX_2   8
#define MAX_COEF_FOR_SORT   100
#define MAX_MONOMS   2000
#define MIN_2   7
#define MINUS_1   2
#define MINUS_2   3
#define NB_OF_OP   13
#define New_Poly (   p)    ((p).c = (p).nb_monom = 0)
#define New_Tagged_Fd_Variable   (Tag_REF(Pl_Fd_New_Variable()))
#define OBJ_INIT   Math_Supp_Initializer
#define PLUS_1   0
#define PLUS_2   1
#define POWER_2   6
#define QUOT_2   10
#define QUOT_REM_3   12
#define REM_2   11
#define TIMES_2   4
#define VARS_STACK_SIZE   100000

Function Documentation

static void Add_Monom ( Poly p,
int  sign,
PlLong  a,
WamWord  x_word 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static Bool Add_Multiply_Monom ( Poly p,
int  sign,
Monom m1,
Monom m2 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static int Compar_Monom ( Monom m1,
Monom m2 
)
static

Here is the caller graph for this function:

static Bool Load_Delay_Cstr_Part ( void  )
static

Here is the call graph for this function:

Here is the caller graph for this function:

static Bool Load_Left_Right_Rec ( Bool  optim_eq,
WamWord  le_word,
WamWord  re_word,
int *  mask,
WamWord c_word,
WamWord l_word,
WamWord r_word 
)
static

Here is the caller graph for this function:

static Bool Load_Left_Right_Rec ( Bool  optim_eq,
WamWord  le_word,
WamWord  re_word,
int *  mask,
PlLong c,
WamWord l_word,
WamWord r_word 
)
static

Here is the call graph for this function:

static Bool Load_Poly ( int  nb_monom,
Monom m,
WamWord  pref_load_word,
WamWord load_word 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static Bool Load_Poly_Rec ( int  nb_monom,
Monom m,
WamWord  load_word 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static Bool Load_Term_Into_Word ( WamWord  e_word,
WamWord load_word 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static void Math_Supp_Initializer ( void  )
static

Here is the call graph for this function:

static Bool Normalize ( WamWord  e_word,
int  sign,
Poly p 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

Bool Pl_Fd_Math_Unify_X_Y ( WamWord  x,
WamWord  y 
)

Here is the call graph for this function:

Here is the caller graph for this function:

Bool Pl_Load_Left_Right ( Bool  optim_eq,
WamWord  le_word,
WamWord  re_word,
int *  mask,
PlLong c,
WamWord l_word,
WamWord r_word 
)

Here is the call graph for this function:

Here is the caller graph for this function:

Bool Pl_Term_Math_Loading ( WamWord  l_word,
WamWord  r_word 
)

Here is the call graph for this function:

Here is the caller graph for this function:

Bool pl_x_eq_c ( WamWord  x,
WamWord  c 
)

Here is the call graph for this function:

Here is the caller graph for this function:

static WamWord Push_Delayed_Cstr ( int  cstr,
WamWord  a1,
WamWord  a2,
WamWord  a3 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

Variable Documentation

WamWord arith_tbl[NB_OF_OP]
static
NonLin delay_cstr_stack[DELAY_CSTR_STACK_SIZE]
static
NonLin* delay_sp
static
Bool sort
static
WamWord* vars_sp
static
WamWord vars_tbl[VARS_STACK_SIZE]
static