HepLib
Static Public Member Functions | List of all members
HepLib::SD::ChengWu Class Reference

class to manipulate with Cheng-Wu theorem More...

#include <SD.h>

Static Public Member Functions

static bool isProjective (const ex fe, const ex delta)
 to check the input fe is Projective or NOT w.r.t. delta More...
 
static void Projectivize (ex &fe, const ex delta, const ex xsum=0)
 to Projectivize the input fe, the fe will be updated More...
 
static void Scalelize (ex &fe, const lst xs, const ex cy)
 to Scalelize the input fe, the fe will be updated More...
 
static void Scalelize (ex &fe, const ex xi, const ex cy)
 to Scalelize the input fe, the fe will be updated, make transformation xi -> cy * yi & yi->xi, the determinant will be added to fe back More...
 
static exvector Binarize (ex const fe, ex const eqn)
 Binarize the input fe, w.r.t. the linear eqn. More...
 
static void Binarize (ex const fe, ex const eqn, exvector &ovec)
 Binarize the input fe, w.r.t. the linear eqn. More...
 
static bool isLinearizable (const ex ft, const ex delta, lst &xcs)
 Linearize w.r.t. F-term. More...
 
static void Linearize (const lst xcs, ex &fe, ex &ft)
 Linearize w.r.t. xcs_in. More...
 
static bool isPartilizable (const ex ft, const ex delta, lst &xcs, int mode=0)
 isPartilize w.r.t. F-term, generized to isLinearizable More...
 
static void Partilize (const lst xcs, const lst delta, const ex fe, exvector &ret_lst)
 Partilize function, generized to Linearize. More...
 
static exvector Evaluate (const ex &fe)
 ChengWu Internal, make sure ft in the first term, ONLY appear in ChengWu.cpp. More...
 
static exvector WickRotation (const exvector &fe_vec)
 WickRotation, just check WRA exist or NOT to see successful or NOT. Still Experimental. More...
 
static exvector Apply (const exvector &fe_vec, const ex &ft=0)
 ChengWu-rized on the vector of fe, note that 1st element of the output, which needs to be droped, its information is used to label the ChengWu is successful or NOT. also check the Evaluate function for more information. More...
 
static exvector Apply (const ex &fe, const ex &ft=0)
 

Detailed Description

class to manipulate with Cheng-Wu theorem

Definition at line 387 of file SD.h.

Member Function Documentation

◆ Apply() [1/2]

static exvector HepLib::SD::ChengWu::Apply ( const ex &  fe,
const ex &  ft = 0 
)
inlinestatic

Definition at line 403 of file SD.h.

◆ Apply() [2/2]

exvector HepLib::SD::ChengWu::Apply ( const exvector &  fe_vec,
const ex &  ft = 0 
)
static

ChengWu-rized on the vector of fe, note that 1st element of the output, which needs to be droped, its information is used to label the ChengWu is successful or NOT. also check the Evaluate function for more information.

Parameters
fe_vecthe input vector of fe
Returns
ChengWu-rized vector of fe

Definition at line 61 of file ChengWu.cpp.

◆ Binarize() [1/2]

exvector HepLib::SD::ChengWu::Binarize ( ex const  fe,
ex const  eqn 
)
static

Binarize the input fe, w.r.t. the linear eqn.

Parameters
fethe { function list, exponet list }
eqnlinear equation, line a xi + b xj, e.g. xi-xj can be devide into xi>xj and xi < xj, and then change xi/xj back to 0 to infinity
Returns
2 elements of { function list, exponet list }, just like fe

Definition at line 219 of file ChengWu.cpp.

◆ Binarize() [2/2]

void HepLib::SD::ChengWu::Binarize ( ex const  fe,
ex const  eqn,
exvector &  ovec 
)
static

Binarize the input fe, w.r.t. the linear eqn.

Parameters
fethe { function list, exponet list }
eqnlinear equation, line a xi + b xj, e.g. xi-xj can be devide into xi>xj and xi < xj, and then change xi/xj back to 0 to infinity
ovecwill get updated

Definition at line 231 of file ChengWu.cpp.

◆ Evaluate()

exvector HepLib::SD::ChengWu::Evaluate ( const ex &  in_fe)
static

ChengWu Internal, make sure ft in the first term, ONLY appear in ChengWu.cpp.

Parameters
in_feinput fe, ft = in_fe.op(0).op(0), and in_fe.op(1).op(0) should be 0
Returns
vector of fe, and fe_op(0).op(0) replaced by 1-ok, 2-nok

Definition at line 648 of file ChengWu.cpp.

◆ isLinearizable()

bool HepLib::SD::ChengWu::isLinearizable ( const ex  ft,
const ex  delta,
lst &  xcs 
)
static

Linearize w.r.t. F-term.

Parameters
ftthe F-term
deltathe delta list
xcsa list of format: { {x1,c1}, {x2,c2} ... }, will be updated by its append method
Returns
true for success

Definition at line 300 of file ChengWu.cpp.

◆ isPartilizable()

bool HepLib::SD::ChengWu::isPartilizable ( const ex  ft,
const ex  delta,
lst &  xcs,
int  mode = 0 
)
static

isPartilize w.r.t. F-term, generized to isLinearizable

Parameters
ftthe F-term
deltathe delta list
xcsa list of format: { {x1,c1}, {x2,c2} ... }, will be updated by its append method
modein the following, the repeated i implies summation on it.
  • mode=0: x_i P_i, with P_i same-sign
  • mode=1: x_i P_i + G_0, with P_i and G_0 same-sign
  • mode=2: x_i P_i + G_0, with P-i same-sign, G_0 ~ (xm-xn)^n
  • mode=3: x_i P_i + x_0 G_0 + Q_0, with P-i same-sign, G_0 ~ (xm-xn)^n & Q_0 same-sign
  • mode=4: x_i P_i + x_0 G_0 + Q_0, with P-i same-sign, G_0/Q_0 ~ (xm-xn)^n
Returns
2 elements of { function list, exponet list }, just like fe

Definition at line 396 of file ChengWu.cpp.

◆ isProjective()

bool HepLib::SD::ChengWu::isProjective ( const ex  fe,
const ex  delta 
)
static

to check the input fe is Projective or NOT w.r.t. delta

Parameters
feis the { function list, exponet list }
deltais a list of x's in Delta function
Returns
true if fe is Projective

Definition at line 94 of file ChengWu.cpp.

◆ Linearize()

void HepLib::SD::ChengWu::Linearize ( const lst  xcs_in,
ex &  fe,
ex &  ft 
)
static

Linearize w.r.t. xcs_in.

Parameters
xcs_infrom isLinerizable function
fethe input/ouput fe
ftother expression needs to be transformed

Definition at line 327 of file ChengWu.cpp.

◆ Partilize()

void HepLib::SD::ChengWu::Partilize ( const lst  xcs,
const lst  delta_in,
const ex  fe_in,
exvector &  ret_lst 
)
static

Partilize function, generized to Linearize.

Parameters
xcsjust from isPartilizable
delta_inthe delta list
fe_inthe original fe
ret_lstwill be updated by push_back

Definition at line 488 of file ChengWu.cpp.

◆ Projectivize()

void HepLib::SD::ChengWu::Projectivize ( ex &  fe,
const ex  delta,
const ex  xsum_in = 0 
)
static

to Projectivize the input fe, the fe will be updated

Parameters
feis the { function list, exponet list }
deltais a list of x's in Delta function
xsum_inis used to balance the powers, xsum refers to Delta(1-xsum), if xsum=0, then xsum=SUM(delta list)

Definition at line 118 of file ChengWu.cpp.

◆ Scalelize() [1/2]

void HepLib::SD::ChengWu::Scalelize ( ex &  fe,
const ex  xi,
const ex  cy 
)
static

to Scalelize the input fe, the fe will be updated, make transformation xi -> cy * yi & yi->xi, the determinant will be added to fe back

Parameters
feis the { function list, exponet list }
xithe variable
cythe coefficient

Definition at line 158 of file ChengWu.cpp.

◆ Scalelize() [2/2]

void HepLib::SD::ChengWu::Scalelize ( ex &  fe,
const lst  xs,
const ex  cy 
)
static

to Scalelize the input fe, the fe will be updated

Parameters
feis the { function list, exponet list }
xsthe list of { xi }, make transformation for each xi -> cy * yi & yi->xi, the determinant will be added to fe back
cythe coefficient

Definition at line 169 of file ChengWu.cpp.

◆ WickRotation()

exvector HepLib::SD::ChengWu::WickRotation ( const exvector &  fe_vec)
static

WickRotation, just check WRA exist or NOT to see successful or NOT. Still Experimental.

Parameters
fe_vecinput fe vector
Returns
vector of fe

Definition at line 743 of file ChengWu.cpp.


The documentation for this class was generated from the following files: