F = E + En * EFl
G = H + Hn * GHl
- #cost_EFCD = subst_vect(cost_ABCD, (A,E), (B,F))
- #cost_FBCD = subst_vect(cost_ABCD, (A,F))
- #cost_ABCG = subst_vect(cost_ABCD, (D,G))
- #cost_ABGH = subst_vect(cost_ABCD, (C,G), (D,H))
-
# diff_A_i = cost_ABCD.diff(vector_component(A, 0))
# global diff_A_i
# dbg('diff_A_i')
def gen_misc():
cprintraw('// AUTOGENERATED - DO NOT EDIT\n')
-def gen_point_index_macro(macro_basename, c_array_name, base_index):
- cprintraw('#define %s (&%s[%s])'
- % (macro_basename, c_array_name, base_index))
+def gen_point_coords_macro(macro_basename):
ijk = 'i j k'.split(' ')
for ii in range(0, len(ijk)):
cprintraw('#define %s_%s (%s[%d])'
% (macro_basename, ijk[ii], macro_basename, ii))
-def gen_abcd_ijk_macros():
+def gen_point_index_macro(macro_basename, c_array_name, base_index):
+ cprintraw('#define %s (&%s[%s])'
+ % (macro_basename, c_array_name, base_index))
+ gen_point_coords_macro(macro_basename)
+
+def gen_point_references():
abcd = 'A B C D'.split(' ')
eh = 'E En H Hn'.split(' ')
for ehi in range(0, len(eh)):
gen_point_index_macro(eh[ehi], 'FIXED', ehi * 3)
+ cprint('#define POINT(PP) (')
+ cprint(' (PP) == 0 ? E :')
+ cprint(' (PP) == 1 ? F :')
+ cprint(' (PP) == N-2 ? G :')
+ cprint(' (PP) == N-1 ? H :')
+ cprint(' &X[((PP)-2)*3]')
+ cprintraw(')')
+
for ai in range(0, len(abcd)):
- gen_point_index_macro(abcd[ai], 'X', '(P%+d) * 3' % (ai - 2))
+ cprintraw('#define %s POINT(P%+d)' % (abcd[ai], ai))
+ gen_point_coords_macro(abcd[ai])
- cprint('#define E_CALCULATE_MID')
- cassign(cost_ABCD,'d','dtmp_mid')
+def gen_calculate_FG():
+ cprint('#define CALCULAGE_F_G')
+ cassign(E,'E','tmp_E')
+ cassign(E,'F','tmp_F')
-def gen_e_calculate():
- cprint('#define E_CALCULATE_MID')
- cprint('if (P==0) '
- cassign(cost_ABCD,'d','dtmp_mid')
+def gen_calculate_cost():
+ cprint('#define CALCULATE_COST')
+ cassign(cost_ABCD,'P_cost','tmp_P_cost')
+ cprintraw('')
def gen_f_populate():
cprint('#define F_POPULATE')
def gen_C():
gen_misc()
- gen_abcd_ijk_macros()
- gen_e_calculate()
+ gen_point_references()
+ #gen_calculate_FG()
+ gen_calculate_cost()
def get_python():
# https://github.com/sympy/sympy/issues/13642