* Copyright (C) 2023 Dennis J. Darland * This file is part of Dennis J Darland's Glucose Prediction Software. * It 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 3 of the License, or * (at your option) any later version. * This 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 it. If not, see . OUTPUT('out',3,128,'relate_several_cross_out1.mxt') &DUMP = 1 &TRACE = 100 TRACE('C_ksteps') TRACE('C2_ksteps') datechar = "0123456789/" dig = "0123456789.-" maxeqs = 1000 eq = ARRAY(maxeqs) eqno = 1 solution = 0 DEFINE('ABS(N)') :(ABS_END) ABS ABS = LT(N,0.0) (0.0 - N) :s(RETURN) ABS = N :(RETURN) ABS_END INPUT('recommended',2,128,'recommended.txt') recommended_ksteps = recommended kstep_exponent = recommended kstep_factor = recommended recommended_fat = recommended recommended_carb = recommended recommended_prot = recommended recommended_fiber = recommended recommended_sugar = recommended recommended_saturated = recommended delta_method = recommended kstep_method = recommended order = recommended factor1 = recommended factor2 = recommended result_file = recommended recommended_fasted = recommended prior_factor = recommended fasted_factor = recommended eliminate_extremes = recommended metabolism = recommended cal_per_gram_carb = recommended cal_per_gram_prot = recommended cal_per_gram_fat = recommended cal_per_ksteps = recommended recommended_carb_other = recommended_carb - recommended_fiber - recommended_sugar LE(recommended_carb_other, 0.0) :s(err1) recommended_fat_other = recommended_fat - recommended_saturated LE(recommended_fat_other, 0.0) :s(err2) TOP LINE = INPUT :F(FINISH) LINE SPAN(datechar) . occurred ARB . part1 RPOS(0) :f(TOP) part1 SPAN(' \t') SPAN(dig) . glucose ARB . part2 RPOS(0) part2 SPAN(' \t') SPAN(dig) . previous ARB . part3 RPOS(0) part3 SPAN(' \t') SPAN(dig) . cal ARB . part4 RPOS(0) part4 SPAN(' \t') SPAN(dig) . ksteps ARB . part5 RPOS(0) part5 SPAN(' \t') SPAN(dig) . fat ARB . part6 RPOS(0) part6 SPAN(' \t') SPAN(dig) . carb ARB . part7 RPOS(0) part7 SPAN(' \t') SPAN(dig) . prot ARB . part8 RPOS(0) part8 SPAN(' \t') SPAN(dig) . fiber ARB . part9 RPOS(0) part9 SPAN(' \t') SPAN(dig) . sugar ARB . part10 RPOS(0) part10 SPAN(' \t') SPAN(dig) . saturated ARB . part11 RPOS(0) part11 SPAN(' \t') SPAN(dig) . fasted ARB RPOS(0) carb_other = carb - fiber - sugar fat_other = fat - saturated method2 eq(delta_method,3) :s(method3) eq(delta_method,1) :s(method1) delta_ksteps = ((recommended_ksteps - ksteps) * kstep_factor) / recommended_ksteps / recommended_ksteps delta_fat_other = (fat_other - recommended_fat_other) / recommended_fat_other / recommended_fat_other delta_carb_other = (carb_other - recommended_carb_other) / recommended_carb_other / recommended_carb_other delta_prot = (prot - recommended_prot) / recommended_prot / recommended_prot delta_fiber = (fiber - recommended_fiber) / recommended_fiber / recommended_fiber delta_sugar = (sugar - recommended_sugar) / recommended_sugar / recommended_sugar delta_saturated = (saturated - recommended_saturated) / recommended_saturated / recommended_saturated delta_fasted = (fasted - recommended_fasted) * fasted_factor / recommended_fasted / recommended_fasted :(didm2) method1 delta_ksteps = ((recommended_ksteps - ksteps) * kstep_factor) / recommended_ksteps delta_fat_other = (fat_other - recommended_fat_other) / recommended_fat_other delta_carb_other = (carb_other - recommended_carb_other) / recommended_carb_other delta_prot = (prot - recommended_prot) / recommended_prot delta_fiber = (fiber - recommended_fiber) / recommended_fiber delta_sugar = (sugar - recommended_sugar) / recommended_sugar delta_saturated = (saturated - recommended_saturated) / recommended_saturated delta_fasted = (fasted - recommended_fasted) * fasted_factor / recommended_fasted :(didm2) method3 delta_ksteps = (recommended_ksteps - ksteps ) * kstep_factor delta_fat_other = (fat_other - recommended_fat_other) delta_carb_other = (carb_other - recommended_carb_other) delta_prot = (prot - recommended_prot) delta_fiber = (fiber - recommended_fiber) delta_sugar = (sugar - recommended_sugar) delta_saturated = (saturated - recommended_saturated) delta_fasted = (fasted - recommended_fasted) * fasted_factor didm2 eq[eqno] = glucose " = " previous * prior_factor eq[eqno] = eq[eqno] " + (" metabolism ")" eq[eqno] = eq[eqno] " + (" cal_per_ksteps ") * C_ksteps * (" (delta_ksteps) ")" eq[eqno] = eq[eqno] " + (" cal_per_gram_fat ") * " factor1 " * C_fat_other * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + (" cal_per_gram_carb ") * " factor1 " * C_carb_other * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + (" cal_per_gram_prot ") * " factor1 " * C_protein * (" (delta_prot) ")" eq[eqno] = eq[eqno] " + (" cal_per_gram_carb ") * " factor1 " * C_fiber * (" (delta_fiber) ")" eq[eqno] = eq[eqno] " + (" cal_per_gram_carb ") * " factor1 " * C_sugar * (" (delta_sugar) ")" eq[eqno] = eq[eqno] " + (" cal_per_gram_fat ") * " factor1 " * C_saturated * (" (delta_saturated) ")" eq[eqno] = eq[eqno] " + ( C_fasted ) * ( " delta_fasted ")" * eq[eqno] = eq[eqno] " + " factor1 " * C_metabolism " LE(order,1) :s(DOING_1A) eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps * (" (delta_ksteps) ")" " * (" (delta_ksteps) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_fat_other * (" (delta_fat_other) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_carb_other * (" (delta_carb_other) ")" " * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_protein * (" (delta_prot) ")" " * (" (delta_prot) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_fiber * (" (delta_fiber) ")" " * (" (delta_fiber) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_sugar * (" (delta_sugar) ")" " * (" (delta_sugar) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_saturated * (" (delta_saturated) ")" " * (" (delta_saturated) ")" LE(order,2) :s(DOING_1A) eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps_fat_other * (" (delta_ksteps) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_carb_other_fat_other * (" (delta_carb_other) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_protein_fat_other * (" (delta_prot) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_fiber_fat_other * (" (delta_fiber) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_sugar_fat_other * (" (delta_sugar) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_saturated_fat_other * (" (delta_saturated) ")" " * (" (delta_fat_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps_carb_other * (" (delta_ksteps) ")" " * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_protein_carb_other * (" (delta_prot) ")" " * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_fiber_carb_other * (" (delta_fiber) ")" " * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_sugar_carb_other * (" (delta_sugar) ")" " * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_saturated_carb_other * (" (delta_saturated) ")" " * (" (delta_carb_other) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps_protein * (" (delta_ksteps) ")" " * (" (delta_prot) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_fiber_protein * (" (delta_fiber) ")" " * (" (delta_prot) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_sugar_protein * (" (delta_sugar) ")" " * (" (delta_prot) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_saturated_protein * (" (delta_saturated) ")" " * (" (delta_prot) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps_fiber * (" (delta_ksteps) ")" " * (" (delta_fiber) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_sugar_fiber * (" (delta_sugar) ")" " * (" (delta_fiber) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_saturated_fiber * (" (delta_saturated) ")" " * (" (delta_fiber) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps_sugar * (" (delta_ksteps) ")" " * (" (delta_sugar) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_saturated_sugar * (" (delta_saturated) ")" " * (" (delta_sugar) ")" eq[eqno] = eq[eqno] " + " factor2 " * C2_ksteps_saturated * (" (delta_ksteps) ")" " * (" (delta_saturated) ")" DOING_1A eqno = eqno + 1 LE(order, 1) :s(DOING_1B) LE(order, 2) :s(DOING_1BB) LT(eqno , 37) :s(TOP) old_eqno = eqno solution = solution + 1 OUT = "solve({" OUT = eq[old_eqno - 36] ", " OUT = eq[old_eqno - 35] ", " OUT = eq[old_eqno - 34] ", " OUT = eq[old_eqno - 33] ", " OUT = eq[old_eqno - 32] ", " OUT = eq[old_eqno - 31] ", " OUT = eq[old_eqno - 30] ", " OUT = eq[old_eqno - 29] ", " OUT = eq[old_eqno - 28] ", " OUT = eq[old_eqno - 27] ", " OUT = eq[old_eqno - 26] ", " OUT = eq[old_eqno - 25] ", " OUT = eq[old_eqno - 24] ", " OUT = eq[old_eqno - 23] ", " OUT = eq[old_eqno - 22] ", " OUT = eq[old_eqno - 21] ", " OUT = eq[old_eqno - 20] ", " OUT = eq[old_eqno - 19] ", " OUT = eq[old_eqno - 18] ", " OUT = eq[old_eqno - 17] ", " OUT = eq[old_eqno - 16] ", " OUT = eq[old_eqno - 15] ", " OUT = eq[old_eqno - 14] ", " OUT = eq[old_eqno - 13] ", " OUT = eq[old_eqno - 12] ", " OUT = eq[old_eqno - 11] ", " OUT = eq[old_eqno - 10] ", " OUT = eq[old_eqno - 9] ", " OUT = eq[old_eqno - 8] "," OUT = eq[old_eqno - 7] ", " OUT = eq[old_eqno - 6] ", " OUT = eq[old_eqno - 5] ", " OUT = eq[old_eqno - 4] ", " OUT = eq[old_eqno - 3] ", " OUT = eq[old_eqno - 2] ", " OUT = eq[old_eqno - 1] " }," OUT = "[C_ksteps, C_fat_other, C_carb_other," OUT = " C_protein, C_fiber, C_sugar, C_saturated," OUT = " C_fasted, " * OUT = " C_fasted, C_metabolism, " OUT = " C2_ksteps, C2_fat_other, C2_carb_other," OUT = " C2_protein, C2_fiber, C2_sugar, C2_saturated, " OUT = " C2_ksteps_fat_other, C2_carb_other_fat_other," OUT = " C2_protein_fat_other, C2_fiber_fat_other, C2_sugar_fat_other, " OUT = " C2_saturated_fat_other, " OUT = " C2_ksteps_carb_other, " OUT = " C2_protein_carb_other, C2_fiber_carb_other, C2_sugar_carb_other," OUT = " C2_saturated_carb_other," OUT = " C2_ksteps_protein, " OUT = " C2_fiber_protein, C2_sugar_protein, C2_saturated_protein, " OUT = " C2_ksteps_fiber," OUT = " C2_sugar_fiber, C2_saturated_fiber, " OUT = " C2_ksteps_sugar," OUT = " C2_saturated_sugar, " OUT = " C2_ksteps_saturated ]); " :(TOP) DOING_1B LT(eqno , 9) :s(TOP) old_eqno = eqno solution = solution + 1 OUT = "solve({" OUT = eq[old_eqno - 8] ", " OUT = eq[old_eqno - 7] ", " OUT = eq[old_eqno - 6] ", " OUT = eq[old_eqno - 5] ", " OUT = eq[old_eqno - 4] ", " OUT = eq[old_eqno - 3] ", " OUT = eq[old_eqno - 2] ", " OUT = eq[old_eqno - 1] " }," OUT = "[C_ksteps, C_fat_other, C_carb_other," OUT = " C_protein, C_fiber, C_sugar, C_saturated," OUT = " C_fasted]);" * OUT = " C_fasted, C_metabolism]);" :(TOP) DOING_1BB LT(eqno , 17) :s(TOP) old_eqno = eqno solution = solution + 1 OUT = "solve({" OUT = eq[old_eqno - 16] ", " OUT = eq[old_eqno - 15] ", " OUT = eq[old_eqno - 14] ", " OUT = eq[old_eqno - 13] ", " OUT = eq[old_eqno - 12] ", " OUT = eq[old_eqno - 11] ", " OUT = eq[old_eqno - 10] ", " OUT = eq[old_eqno - 9] ", " OUT = eq[old_eqno - 8] "," OUT = eq[old_eqno - 7] ", " OUT = eq[old_eqno - 6] ", " OUT = eq[old_eqno - 5] ", " OUT = eq[old_eqno - 4] ", " OUT = eq[old_eqno - 3] ", " OUT = eq[old_eqno - 2] ", " OUT = eq[old_eqno - 1] " }," OUT = "[C_ksteps, C_fat_other, C_carb_other," OUT = " C_protein, C_fiber, C_sugar, C_saturated," OUT = " C_fasted, " * OUT = " C_fasted, C_metabolism, " OUT = " C2_ksteps, C2_fat_other, C2_carb_other," OUT = " C2_protein, C2_fiber, C2_sugar, C2_saturated]); " :(TOP) err1 OUT = "recommended_carb_other <= 0" :(END) err2 OUT = "recommended_fat_other <= 0" :(END) FINISH OUT = "quit;" * LT(eqno, 35) :f(END) * OUTPUT = "TOO FEW EQUATIONS (= " eqno ")" :(END) END