(%i1) batch("diffeq.max") read and interpret file: /home/dennis/mastersource/mine/omnisode/diffeq.max (%i2) load("stringproc") (%o2) /usr/share/maxima/5.31.3/share/stringproc/stringproc.mac (%i3) alias(convfloat,float) (%o3) [convfloat] (%i4) alias(int_trunc,truncate) (%o4) [truncate] (%i5) alias(elapsed_time_seconds,elapsed_real_time) (%o5) [elapsed_time_seconds] (%i6) alias(ln,log) (%o6) [log] (%i7) alias(arcsin,asin) (%o7) [asin] (%i8) alias(arccos,acos) (%o8) [acos] (%i9) alias(arctan,atan) (%o9) [atan] (%i10) alias(float_abs,abs) (%o10) [mabs] (%i11) keepfloat:true (%o11) true (%i12) mode_declare(display_poles(),fixnum) (%o12) [display_poles()] (%i13) mode_declare(est_size_answer(),convfloat) (%o13) [est_size_answer()] (%i14) mode_declare(test_suggested_h(),convfloat) (%o14) [test_suggested_h()] (%i15) mode_declare(reached_interval(),boolean) (%o15) [reached_interval()] (%i16) mode_declare(display_alot([iter],fixnum),fixnum) (%o16) [display_alot([iter], fixnum)] (%i17) mode_declare(adjust_for_pole([h_param],convfloat),convfloat) (%o17) [adjust_for_pole([h_param], convfloat)] (%i18) mode_declare(prog_report([x_start],convfloat,[x_end],convfloat),fixnum) (%o18) [prog_report([x_start], convfloat, [x_end], convfloat)] (%i19) mode_declare(check_for_pole(),fixnum) (%o19) [check_for_pole()] (%i20) mode_declare(atomall(),fixnum) (%o20) [atomall()] (%i21) mode_declare(log10([x],convfloat),convfloat) (%o21) [log10([x], convfloat)] (%i22) mode_declare(logitem_timestr([fd],fixnum,[secs_in],number),fixnum) (%o22) [logitem_timestr([fd], fixnum, [secs_in], number)] (%i23) mode_declare(omniout_timestr(secs_in,number),fixnum) (%o23) [omniout_timestr(secs_in, number)] (%i24) mode_declare(zero_ats_ar(ar,array([MAX_TERMS],convfloat)),fixnum) (%o24) [zero_ats_ar(ar, array([MAX_TERMS], convfloat))] (%i25) mode_declare(ats([mmm_ats],fixnum,[arr_a], completearray([MAX_TERMS],convfloat),[arr_b], completearray([MAX_TERMS],convfloat),[jjj_ats], fixnum),convfloat) (%o25) [ats([mmm_ats], fixnum, [arr_a], completearray([MAX_TERMS], convfloat), [arr_b], completearray([MAX_TERMS], convfloat), [jjj_ats], fixnum)] (%i26) mode_declare(att([mmm_att],fixnum,[arr_a], completearray([MAX_TERMS],convfloat),[arr_b], completearray([MAX_TERMS],convfloat),[jjj_att], fixnum),convfloat) (%o26) [att([mmm_att], fixnum, [arr_a], completearray([MAX_TERMS], convfloat), [arr_b], completearray([MAX_TERMS], convfloat), [jjj_att], fixnum)] (%i27) mode_declare(logitem_ditto([file],fixnum),fixnum) (%o27) [logitem_ditto([file], fixnum)] (%i28) mode_declare(logitem_integer([file],fixnum,[n],fixnum),fixnum) (%o28) [logitem_integer([file], fixnum, [n], fixnum)] (%i29) mode_declare(logitem_good_digits([file],fixnum,[relerror],convfloat),fixnum) (%o29) [logitem_good_digits([file], fixnum, [relerror], convfloat)] (%i30) mode_declare(logitem_number([file],fixnum,[x],number),fixnum) (%o30) [logitem_number([file], fixnum, [x], number)] (%i31) mode_declare(logitem_pole([file],fixnum,[pole],fixnum),fixnum) (%o31) [logitem_pole([file], fixnum, [pole], fixnum)] (%i32) mode_declare(logstart([file],fixnum),fixnum) (%o32) [logstart([file], fixnum)] (%i33) mode_declare(logend([file],fixnum),fixnum) (%o33) [logend([file], fixnum)] (%i34) mode_declare(chk_data(),fixnum) (%o34) [chk_data()] (%i35) mode_declare(comp_expect_sec([t_end2],convfloat,[t_start2],convfloat, [t2],convfloat,[clock_sec2],convfloat), convfloat) (%o35) [comp_expect_sec([t_end2], convfloat, [t_start2], convfloat, [t2], convfloat, [clock_sec2], convfloat)] (%i36) mode_declare(comp_percent([t_end2],convfloat,[start2],convfloat,[t2], convfloat),convfloat) (%o36) [comp_percent([t_end2], convfloat, [start2], convfloat, [t2], convfloat)] (%i37) mode_declare(comp_rad_from_ratio([term1],convfloat,[term2],convfloat, [last_no],fixnum),convfloat) (%o37) [comp_rad_from_ratio([term1], convfloat, [term2], convfloat, [last_no], fixnum)] (%i38) mode_declare(comp_ord_from_ratio([term1],convfloat,[term2],convfloat, [last_no],fixnum),convfloat) (%o38) [comp_ord_from_ratio([term1], convfloat, [term2], convfloat, [last_no], fixnum)] (%i39) mode_declare(comp_rad_from_three_terms([term1],convfloat,[term2], convfloat,[term3],convfloat, [last_no],fixnum),convfloat) (%o39) [comp_rad_from_three_terms([term1], convfloat, [term2], convfloat, [term3], convfloat, [last_no], fixnum)] (%i40) mode_declare(comp_ord_from_three_terms([term1],convfloat,[term2], convfloat,[term3],convfloat, [last_no],fixnum),convfloat) (%o40) [comp_ord_from_three_terms([term1], convfloat, [term2], convfloat, [term3], convfloat, [last_no], fixnum)] (%i41) mode_declare(comp_rad_from_six_terms([term1],convfloat,[term2], convfloat,[term3],convfloat, [term4],convfloat,[term5], convfloat,[term6],convfloat, [last_no],fixnum),convfloat) (%o41) [comp_rad_from_six_terms([term1], convfloat, [term2], convfloat, [term3], convfloat, [term4], convfloat, [term5], convfloat, [term6], convfloat, [last_no], fixnum)] (%i42) mode_declare(comp_ord_from_six_terms([term1],convfloat,[term2], convfloat,[term3],convfloat, [term4],convfloat,[term5], convfloat,[term6],convfloat, [last_no],fixnum),convfloat) (%o42) [comp_ord_from_six_terms([term1], convfloat, [term2], convfloat, [term3], convfloat, [term4], convfloat, [term5], convfloat, [term6], convfloat, [last_no], fixnum)] (%i43) mode_declare(factorial_2([nnn],fixnum),fixnum) (%o43) [factorial_2([nnn], fixnum)] (%i44) mode_declare(factorial_1([nnn],fixnum),fixnum) (%o44) [factorial_1([nnn], fixnum)] (%i45) mode_declare(factorial_3([mmm],fixnum,[nnn],fixnum),fixnum) (%o45) [factorial_3([mmm], fixnum, [nnn], fixnum)] (%i46) mode_declare(convfloat([mmm],fixnum),convfloat) (%o46) [convfloat([mmm], fixnum)] (%i47) mode_declare(elaped_time_seconds(),convfloat) (%o47) [elaped_time_seconds()] (%i48) mode_declare(Si([x],convfloat),convfloat) (%o48) [Si([x], convfloat)] (%i49) mode_declare(Ci([x],convfloat),convfloat) (%o49) [Ci([x], convfloat)] (%i50) mode_declare(estimated_needed_step_error([x_start],convfloat,[x_end], convfloat,[estimated_h], convfloat,[estimated_answer], convfloat),convfloat) (%o50) [estimated_needed_step_error([x_start], convfloat, [x_end], convfloat, [estimated_h], convfloat, [estimated_answer], convfloat)] (%i51) mode_declare(my_check_sign([x0],convfloat,[xf],convfloat),convfloat) (%o51) [my_check_sign([x0], convfloat, [xf], convfloat)] (%i52) mode_declare(main_prog(),fixnum) (%o52) [main_prog()] (%i53) define_variable(MAX_TERMS,30,fixnum) (%o53) 30 (%i54) define_variable(glob_iolevel,5,fixnum) (%o54) 5 (%i55) define_variable(glob_yes_pole,4,fixnum) (%o55) 4 (%i56) define_variable(glob_no_pole,3,fixnum) (%o56) 3 (%i57) define_variable(glob_not_given,0,fixnum) (%o57) 0 (%i58) define_variable(glob_no_sing_tests,4,fixnum) (%o58) 4 (%i59) define_variable(glob_ratio_test,1,fixnum) (%o59) 1 (%i60) define_variable(glob_three_term_test,2,fixnum) (%o60) 2 (%i61) define_variable(glob_six_term_test,3,fixnum) (%o61) 3 (%i62) define_variable(glob_log_10,log(10.0),convfloat) (%o62) 2.302585092994046 (%i63) define_variable(ALWAYS,1,fixnum) (%o63) 1 (%i64) define_variable(INFO,2,fixnum) (%o64) 2 (%i65) define_variable(DEBUGL,3,fixnum) (%o65) 3 (%i66) define_variable(DEBUGMASSIVE,4,fixnum) (%o66) 4 (%i67) define_variable(MAX_UNCHANGED,10,fixnum) (%o67) 10 (%i68) define_variable(glob_check_sign,1.0,convfloat) (%o68) 1.0 (%i69) define_variable(glob_desired_digits_correct,8.0,convfloat) (%o69) 8.0 (%i70) define_variable(glob_max_estimated_step_error,0.0,convfloat) (%o70) 0.0 (%i71) define_variable(glob_ratio_of_radius,0.1,convfloat) (%o71) 0.1 (%i72) define_variable(glob_percent_done,0.0,convfloat) (%o72) 0.0 (%i73) define_variable(glob_subiter_method,3,fixnum) (%o73) 3 (%i74) define_variable(glob_total_exp_sec,0.1,convfloat) (%o74) 0.1 (%i75) define_variable(glob_optimal_expect_sec,0.1,convfloat) (%o75) 0.1 (%i76) define_variable(glob_estimated_size_answer,100.0,convfloat) (%o76) 100.0 (%i77) define_variable(glob_html_log,true,boolean) (%o77) true (%i78) define_variable(glob_good_digits,0,fixnum) (%o78) 0 (%i79) define_variable(glob_max_opt_iter,10,fixnum) (%o79) 10 (%i80) define_variable(glob_dump,false,boolean) (%o80) false (%i81) define_variable(glob_djd_debug,true,boolean) (%o81) true (%i82) define_variable(glob_display_flag,true,boolean) (%o82) true (%i83) define_variable(glob_djd_debug2,true,boolean) (%o83) true (%i84) define_variable(glob_sec_in_minute,60,fixnum) (%o84) 60 (%i85) define_variable(glob_min_in_hour,60.0,convfloat) (%o85) 60.0 (%i86) define_variable(glob_hours_in_day,24.0,convfloat) (%o86) 24.0 (%i87) define_variable(glob_days_in_year,365,fixnum) (%o87) 365 (%i88) define_variable(glob_sec_in_hour,3600,fixnum) (%o88) 3600 (%i89) define_variable(glob_sec_in_day,86400,fixnum) (%o89) 86400 (%i90) define_variable(glob_sec_in_year,31536000,fixnum) (%o90) 31536000 (%i91) define_variable(glob_almost_1,0.999,convfloat) (%o91) 0.999 (%i92) define_variable(glob_clock_sec,0.0,convfloat) (%o92) 0.0 (%i93) define_variable(glob_clock_start_sec,0.0,convfloat) (%o93) 0.0 (%i94) define_variable(glob_not_yet_finished,true,boolean) (%o94) true (%i95) define_variable(glob_initial_pass,true,boolean) (%o95) true (%i96) define_variable(glob_not_yet_start_msg,true,boolean) (%o96) true (%i97) define_variable(glob_reached_optimal_h,false,boolean) (%o97) false (%i98) define_variable(glob_optimal_done,false,boolean) (%o98) false (%i99) define_variable(glob_disp_incr,0.1,convfloat) (%o99) 0.1 (%i100) define_variable(glob_h,0.1,convfloat) (%o100) 0.1 (%i101) define_variable(glob_diff_rc_fm,0.1,convfloat) (%o101) 0.1 (%i102) define_variable(glob_diff_rc_fmm1,0.1,convfloat) (%o102) 0.1 (%i103) define_variable(glob_diff_rc_fmm2,0.1,convfloat) (%o103) 0.1 (%i104) define_variable(glob_diff_ord_fm,0.1,convfloat) (%o104) 0.1 (%i105) define_variable(glob_diff_ord_fmm1,0.1,convfloat) (%o105) 0.1 (%i106) define_variable(glob_diff_ord_fmm2,0.1,convfloat) (%o106) 0.1 (%i107) define_variable(glob_six_term_ord_save,0.1,convfloat) (%o107) 0.1 (%i108) define_variable(glob_guess_error_rc,0.1,convfloat) (%o108) 0.1 (%i109) define_variable(glob_guess_error_ord,0.1,convfloat) (%o109) 0.1 (%i110) define_variable(glob_max_h,0.1,convfloat) (%o110) 0.1 (%i111) define_variable(glob_min_h,1.0E-6,convfloat) (%o111) 1.0E-6 (%i112) define_variable(glob_type_given_pole,0,fixnum) (%o112) 0 (%i113) define_variable(glob_large_float,1.0E+100,convfloat) (%o113) 1.0E+100 (%i114) define_variable(glob_larger_float,1.1E+100,convfloat) (%o114) 1.1E+100 (%i115) define_variable(glob_least_given_sing,9.9E+100,convfloat) (%o115) 9.9E+100 (%i116) define_variable(glob_least_ratio_sing,9.9E+100,convfloat) (%o116) 9.9E+100 (%i117) define_variable(glob_least_3_sing,9.9E+100,convfloat) (%o117) 9.9E+100 (%i118) define_variable(glob_least_6_sing,9.9E+100,convfloat) (%o118) 9.9E+100 (%i119) define_variable(glob_last_good_h,0.1,convfloat) (%o119) 0.1 (%i120) define_variable(glob_look_poles,false,boolean) (%o120) false (%i121) define_variable(glob_neg_h,false,boolean) (%o121) false (%i122) define_variable(glob_display_interval,0.0,convfloat) (%o122) 0.0 (%i123) define_variable(glob_next_display,0.0,convfloat) (%o123) 0.0 (%i124) define_variable(glob_dump_analytic,false,boolean) (%o124) false (%i125) define_variable(glob_abserr,1.0E-11,convfloat) (%o125) 1.0E-11 (%i126) define_variable(glob_relerr,1.0E-11,convfloat) (%o126) 1.0E-11 (%i127) define_variable(glob_min_pole_est,1.0E+9,convfloat) (%o127) 1.0E+9 (%i128) define_variable(glob_max_hours,0.0,convfloat) (%o128) 0.0 (%i129) define_variable(glob_max_iter,1000,fixnum) (%o129) 1000 (%i130) define_variable(glob_max_rel_trunc_err,1.0E-11,convfloat) (%o130) 1.0E-11 (%i131) define_variable(glob_max_trunc_err,1.0E-11,convfloat) (%o131) 1.0E-11 (%i132) define_variable(glob_no_eqs,0,fixnum) (%o132) 0 (%i133) define_variable(glob_optimal_clock_start_sec,0.0,convfloat) (%o133) 0.0 (%i134) define_variable(glob_optimal_start,0.0,convfloat) (%o134) 0.0 (%i135) define_variable(glob_upper_ratio_limit,1.0001,convfloat) (%o135) 1.0001 (%i136) define_variable(glob_lower_ratio_limit,0.9999,convfloat) (%o136) 0.9999 (%i137) define_variable(glob_small_float,0.0,convfloat) (%o137) 0.0 (%i138) define_variable(glob_smallish_float,0.0,convfloat) (%o138) 0.0 (%i139) define_variable(glob_unchanged_h_cnt,0,fixnum) (%o139) 0 (%i140) define_variable(glob_warned,false,boolean) (%o140) false (%i141) define_variable(glob_warned2,false,boolean) (%o141) false (%i142) define_variable(glob_max_sec,10000.0,convfloat) (%o142) 10000.0 (%i143) define_variable(glob_orig_start_sec,0.0,convfloat) (%o143) 0.0 (%i144) define_variable(glob_start,0,fixnum) (%o144) 0 (%i145) define_variable(glob_curr_iter_when_opt,0,fixnum) (%o145) 0 (%i146) define_variable(glob_current_iter,0,fixnum) (%o146) 0 (%i147) define_variable(glob_iter,0,fixnum) (%o147) 0 (%i148) define_variable(glob_normmax,0.0,convfloat) (%o148) 0.0 (%i149) define_variable(glob_max_minutes,0.0,convfloat) (%o149) 0.0 (%i150) array(array_y_init,MAX_TERMS) (%o150) array_y_init (%i151) array(array_norms,MAX_TERMS) (%o151) array_norms (%i152) array(array_fact_1,MAX_TERMS) (%o152) array_fact_1 (%i153) array(array_1st_rel_error,2) (%o153) array_1st_rel_error (%i154) array(array_last_rel_error,2) (%o154) array_last_rel_error (%i155) array(array_type_pole,2) (%o155) array_type_pole (%i156) array(array_type_real_pole,2) (%o156) array_type_real_pole (%i157) array(array_type_complex_pole,2) (%o157) array_type_complex_pole (%i158) array(array_y,MAX_TERMS) (%o158) array_y (%i159) array(array_x,MAX_TERMS) (%o159) array_x (%i160) array(array_tmp0,MAX_TERMS) (%o160) array_tmp0 (%i161) array(array_tmp1_g,MAX_TERMS) (%o161) array_tmp1_g (%i162) array(array_tmp1,MAX_TERMS) (%o162) array_tmp1 (%i163) array(array_tmp2_c1,MAX_TERMS) (%o163) array_tmp2_c1 (%i164) array(array_tmp2_a1,MAX_TERMS) (%o164) array_tmp2_a1 (%i165) array(array_tmp2_a2,MAX_TERMS) (%o165) array_tmp2_a2 (%i166) array(array_tmp2,MAX_TERMS) (%o166) array_tmp2 (%i167) array(array_tmp3_g,MAX_TERMS) (%o167) array_tmp3_g (%i168) array(array_tmp3,MAX_TERMS) (%o168) array_tmp3 (%i169) array(array_tmp4,MAX_TERMS) (%o169) array_tmp4 (%i170) array(array_tmp5,MAX_TERMS) (%o170) array_tmp5 (%i171) array(array_tmp6,MAX_TERMS) (%o171) array_tmp6 (%i172) array(array_tmp7,MAX_TERMS) (%o172) array_tmp7 (%i173) array(array_m1,MAX_TERMS) (%o173) array_m1 (%i174) array(array_y_higher,2,MAX_TERMS) (%o174) array_y_higher (%i175) array(array_y_higher_work,2,MAX_TERMS) (%o175) array_y_higher_work (%i176) array(array_y_higher_work2,2,MAX_TERMS) (%o176) array_y_higher_work2 (%i177) array(array_y_set_initial,2,MAX_TERMS) (%o177) array_y_set_initial (%i178) array(array_given_rad_poles,2,3) (%o178) array_given_rad_poles (%i179) array(array_given_ord_poles,2,3) (%o179) array_given_ord_poles (%i180) array(array_rad_test_poles,2,3) (%o180) array_rad_test_poles (%i181) array(array_ord_test_poles,2,3) (%o181) array_ord_test_poles (%i182) array(array_fact_2,MAX_TERMS,MAX_TERMS) (%o182) array_fact_2 (%i183) omniout_str(iolevel,str):=if glob_iolevel >= iolevel then printf(true,"~a~%",string(str)) (%o183) omniout_str(iolevel, str) := if glob_iolevel >= iolevel then printf(true, "~a~%", string(str)) (%i184) omniout_str_noeol(iolevel,str):=if glob_iolevel >= iolevel then printf(true,"~a",string(str)) (%o184) omniout_str_noeol(iolevel, str) := if glob_iolevel >= iolevel then printf(true, "~a", string(str)) (%i185) omniout_labstr(iolevel,label,str):=if glob_iolevel >= iolevel then printf(true,"~a = ~a~%",string(label), string(str)) (%o185) omniout_labstr(iolevel, label, str) := if glob_iolevel >= iolevel then printf(true, "~a = ~a~%", string(label), string(str)) (%i186) omniout_float(iolevel,prelabel,prelen,value,vallen,postlabel):=if glob_iolevel >= iolevel then (if vallen = 4 then printf(true,"~a = ~g ~s ~%",prelabel, value,postlabel) else printf(true,"~a = ~g ~s ~%",prelabel, value,postlabel)) (%o186) omniout_float(iolevel, prelabel, prelen, value, vallen, postlabel) := if glob_iolevel >= iolevel then (if vallen = 4 then printf(true, "~a = ~g ~s ~%", prelabel, value, postlabel) else printf(true, "~a = ~g ~s ~%", prelabel, value, postlabel)) (%i187) omniout_int(iolevel,prelabel,prelen,value,vallen,postlabel):=if glob_iolevel >= iolevel then (printf(true,"~a = ~d ~a~%",prelabel,value, postlabel),newline()) (%o187) omniout_int(iolevel, prelabel, prelen, value, vallen, postlabel) := if glob_iolevel >= iolevel then (printf(true, "~a = ~d ~a~%", prelabel, value, postlabel), newline()) (%i188) omniout_float_arr(iolevel,prelabel,elemnt,prelen,value,vallen, postlabel):=if glob_iolevel >= iolevel then (sprint(prelabel,"[",elemnt,"]=",value, postlabel),newline()) (%o188) omniout_float_arr(iolevel, prelabel, elemnt, prelen, value, vallen, postlabel) := if glob_iolevel >= iolevel then (sprint(prelabel, "[", elemnt, "]=", value, postlabel), newline()) (%i189) logitem_time(fd,secs_in):=( block(mode_declare( [[days_int,hours_int,minutes_int,sec_int, years_int],fixnum,[secs,secs_temp],convfloat]), secs:secs_in,printf(fd,"~%"), if secs >= 0 then (years_int :truncate(secs/glob_sec_in_year), sec_temp :mod(truncate(secs), truncate(glob_sec_in_year)), days_int :truncate(sec_temp/glob_sec_in_day), sec_temp :mod(sec_temp, truncate(glob_sec_in_day)), hours_int :truncate(sec_temp/glob_sec_in_hour), sec_temp :mod(sec_temp, truncate(glob_sec_in_hour)), minutes_int :truncate(sec_temp/glob_sec_in_minute), sec_int :mod(sec_temp, truncate(glob_sec_in_minute)), if truncate(years_int) > 0.1 then printf(fd, "~d Years ~f Days ~f Hours ~f Minutes ~f Seconds~%", years_int,days_int, hours_int,minutes_int, sec_int) elseif days_int > 0.1 then printf(fd, "~d Days ~d Hours ~d Minutes ~d Seconds~%", days_int,hours_int, minutes_int,sec_int) elseif hours_int > 0.1 then printf(fd, "~d Hours ~d Minutes ~d Seconds~%", hours_int,minutes_int, sec_int) elseif minutes_int > 0.1 then printf(fd, "~d Minutes ~d Seconds~%", minutes_int,sec_int) else printf(fd,"~d Seconds~%", sec_int)) else printf(fd," 0.0 Seconds~%"), printf(fd,"~%")),0) (%o189) logitem_time(fd, secs_in) := (block(mode_declare([[days_int, hours_int, minutes_int, sec_int, years_int], fixnum, [secs, secs_temp], convfloat]), secs : secs_in, printf(fd, "~%"), secs if secs >= 0 then (years_int : truncate(----------------), glob_sec_in_year sec_temp : mod(truncate(secs), truncate(glob_sec_in_year)), sec_temp days_int : truncate(---------------), sec_temp : glob_sec_in_day mod(sec_temp, truncate(glob_sec_in_day)), sec_temp hours_int : truncate(----------------), glob_sec_in_hour sec_temp : mod(sec_temp, truncate(glob_sec_in_hour)), sec_temp minutes_int : truncate(------------------), glob_sec_in_minute sec_int : mod(sec_temp, truncate(glob_sec_in_minute)), if truncate(years_int) > 0.1 then printf(fd, "~d Years ~f Days ~f Hours ~f Minutes ~f Seconds~%", years_int, days_int, hours_int, minutes_int, sec_int) elseif days_int > 0.1 then printf(fd, "~d Days ~d Hours ~d Minutes ~d Seconds~%", days_int, hours_int, minutes_int, sec_int) elseif hours_int > 0.1 then printf(fd, "~d Hours ~d Minutes ~d Seconds~%", hours_int, minutes_int, sec_int) elseif minutes_int > 0.1 then printf(fd, "~d Minutes ~d Seconds~%", minutes_int, sec_int) else printf(fd, "~d Seconds~%", sec_int)) else printf(fd, " 0.0 Seconds~%"), printf(fd, "~%")), 0) (%i190) omniout_timestr(secs_in):=( block(mode_declare( [[days_int,hours_int,minutes_int,sec_int, years_int],fixnum,[secs,secs_temp], convfloat]),secs:secs_in, if secs >= 0 then ( years_int:truncate(secs/glob_sec_in_year), sec_temp :mod(truncate(secs), truncate(glob_sec_in_year)), days_int:truncate(sec_temp/glob_sec_in_day), sec_temp :mod(sec_temp,truncate(glob_sec_in_day)), hours_int :truncate(sec_temp/glob_sec_in_hour), sec_temp :mod(sec_temp,truncate(glob_sec_in_hour)), minutes_int :truncate(sec_temp/glob_sec_in_minute), sec_int :mod(sec_temp, truncate(glob_sec_in_minute)), if years_int > 0 then printf(true, "= ~f Years ~f Days ~f Hours ~f Minutes ~f Seconds~%", years_int,days_int, hours_int,minutes_int, sec_int) elseif days_int > 0.1 then printf(true, "= ~d Days ~d Hours ~d Minutes ~d Seconds~%", days_int,hours_int, minutes_int,sec_int) elseif hours_int > 0.1 then printf(true, "= ~d Hours ~d Minutes ~d Seconds~%", hours_int,minutes_int, sec_int) elseif minutes_int > 0.1 then printf(true, "= ~d Minutes ~d Seconds~%", minutes_int,sec_int) else printf(true,"= ~d Seconds~%", sec_int)) else printf(true,"= 0.0 Seconds~%")),0) (%o190) omniout_timestr(secs_in) := (block(mode_declare([[days_int, hours_int, minutes_int, sec_int, years_int], fixnum, [secs, secs_temp], convfloat]), secs secs : secs_in, if secs >= 0 then (years_int : truncate(----------------), glob_sec_in_year sec_temp : mod(truncate(secs), truncate(glob_sec_in_year)), sec_temp days_int : truncate(---------------), sec_temp : glob_sec_in_day mod(sec_temp, truncate(glob_sec_in_day)), sec_temp hours_int : truncate(----------------), glob_sec_in_hour sec_temp : mod(sec_temp, truncate(glob_sec_in_hour)), sec_temp minutes_int : truncate(------------------), glob_sec_in_minute sec_int : mod(sec_temp, truncate(glob_sec_in_minute)), if years_int > 0 then printf(true, "= ~f Years ~f Days ~f Hours ~f Minutes ~f Seconds~%", years_int, days_int, hours_int, minutes_int, sec_int) elseif days_int > 0.1 then printf(true, "= ~d Days ~d Hours ~d Minutes ~d Seconds~%", days_int, hours_int, minutes_int, sec_int) elseif hours_int > 0.1 then printf(true, "= ~d Hours ~d Minutes ~d Seconds~%", hours_int, minutes_int, sec_int) elseif minutes_int > 0.1 then printf(true, "= ~d Minutes ~d Seconds~%", minutes_int, sec_int) else printf(true, "= ~d Seconds~%", sec_int)) else printf(true, "= 0.0 Seconds~%")), 0) (%i191) zero_ats_ar(arr_a):=( block(modedcclare([iii],fixnum),iii:1, while iii <= MAX_TERMS do (arr_a[iii]:0.0,iii:1+iii)),0) (%o191) zero_ats_ar(arr_a) := (block(modedcclare([iii], fixnum), iii : 1, while iii <= MAX_TERMS do (arr_a : 0.0, iii : 1 + iii)), 0) iii (%i192) ats(mmm_ats,arr_a,arr_b,jjj_ats):=block( mode_declare([[iii_ats,lll_ats,ma_ats],fixnum,[ret_ats], convfloat]),ret_ats:0.0, if jjj_ats <= mmm_ats then (ma_ats:1+mmm_ats,iii_ats:jjj_ats, while iii_ats <= mmm_ats do (lll_ats:ma_ats-iii_ats, if lll_ats <= MAX_TERMS and iii_ats <= MAX_TERMS then ret_ats :arr_a[iii_ats]*arr_b[lll_ats]+ret_ats, iii_ats:1+iii_ats)),ret_ats) (%o192) ats(mmm_ats, arr_a, arr_b, jjj_ats) := block(mode_declare([[iii_ats, lll_ats, ma_ats], fixnum, [ret_ats], convfloat]), ret_ats : 0.0, if jjj_ats <= mmm_ats then (ma_ats : 1 + mmm_ats, iii_ats : jjj_ats, while iii_ats <= mmm_ats do (lll_ats : ma_ats - iii_ats, if (lll_ats <= MAX_TERMS) and (iii_ats <= MAX_TERMS) then ret_ats : arr_a arr_b + ret_ats, iii_ats : 1 + iii_ats)), iii_ats lll_ats ret_ats) (%i193) att(mmm_att,arr_aa,arr_bb,jjj_att):=block( mode_declare([[al_att,iii_att,lll_att,ma_att],convfloat,[ret_att], fixnum]),ret_att:0.0, if jjj_att < mmm_att then (ma_att:2+mmm_att,iii_att:jjj_att, while iii_att < mmm_att and iii_att <= MAX_TERMS do (lll_att:ma_att-iii_att,al_att:lll_att-1, if lll_att <= MAX_TERMS and iii_att <= MAX_TERMS then ret_att :arr_aa[iii_att]*arr_bb[lll_att]*al_att +ret_att,iii_att:1+iii_att), ret_att:ret_att/mmm_att),ret_att) (%o193) att(mmm_att, arr_aa, arr_bb, jjj_att) := block(mode_declare([[al_att, iii_att, lll_att, ma_att], convfloat, [ret_att], fixnum]), ret_att : 0.0, if jjj_att < mmm_att then (ma_att : 2 + mmm_att, iii_att : jjj_att, while (iii_att < mmm_att) and (iii_att <= MAX_TERMS) do (lll_att : ma_att - iii_att, al_att : lll_att - 1, if (lll_att <= MAX_TERMS) and (iii_att <= MAX_TERMS) then ret_att : arr_aa arr_bb al_att + ret_att, iii_att lll_att ret_att iii_att : 1 + iii_att), ret_att : -------), ret_att) mmm_att (%i194) logditto(file):=(printf(file,""),printf(file,"ditto"), printf(file,""),0) (%o194) logditto(file) := (printf(file, ""), printf(file, "ditto"), printf(file, ""), 0) (%i195) logitem_integer(file,n):=(printf(file,""),printf(file,"~d",n), printf(file,""),0) (%o195) logitem_integer(file, n) := (printf(file, ""), printf(file, "~d", n), printf(file, ""), 0) (%i196) logitem_str(file,str):=(printf(file,""),printf(file,str), printf(file,""),0) (%o196) logitem_str(file, str) := (printf(file, ""), printf(file, str), printf(file, ""), 0) (%i197) logitem_good_digits(file,rel_error):=( block(mode_declare([[good_digits],fixnum]), printf(file,""), if rel_error # -1.0 then (if rel_error > +1.0E-34 then ( good_digits :3-floor(log10(rel_error)), printf(file,"~d",good_digits)) else (good_digits:16, printf(file,"~d", good_digits))) else printf(file,"Unknown"), printf(file,"")),0) (%o197) logitem_good_digits(file, rel_error) := (block(mode_declare([[good_digits], fixnum]), printf(file, ""), if rel_error # - 1.0 then (if rel_error > + 1.0E-34 then (good_digits : 3 - floor(log10(rel_error)), printf(file, "~d", good_digits)) else (good_digits : 16, printf(file, "~d", good_digits))) else printf(file, "Unknown"), printf(file, "")), 0) (%i198) log_revs(file,revs):=printf(file,revs) (%o198) log_revs(file, revs) := printf(file, revs) (%i199) logitem_float(file,x):=(printf(file,""),printf(file,"~g",x), printf(file,""),0) (%o199) logitem_float(file, x) := (printf(file, ""), printf(file, "~g", x), printf(file, ""), 0) (%i200) logitem_pole(file,pole):=(printf(file,""), if pole = 0 then printf(file,"NA") elseif pole = 1 then printf(file,"Real") elseif pole = 2 then printf(file,"Complex") elseif pole = 4 then printf(file,"Yes") else printf(file,"No"), printf(file,""),0) (%o200) logitem_pole(file, pole) := (printf(file, ""), if pole = 0 then printf(file, "NA") elseif pole = 1 then printf(file, "Real") elseif pole = 2 then printf(file, "Complex") elseif pole = 4 then printf(file, "Yes") else printf(file, "No"), printf(file, ""), 0) (%i201) logstart(file):=(printf(file,""),0) (%o201) logstart(file) := (printf(file, ""), 0) (%i202) logend(file):=(printf(file,"~%"),0) (%o202) logend(file) := (printf(file, "~%"), 0) (%i203) chk_data():=( block(mode_declare([[errflag],boolean]),errflag:false, if glob_max_iter < 2 then (omniout_str(ALWAYS,"Illegal max_iter"), errflag:true),if errflag then quit()),0) (%o203) chk_data() := (block(mode_declare([[errflag], boolean]), errflag : false, if glob_max_iter < 2 then (omniout_str(ALWAYS, "Illegal max_iter"), errflag : true), if errflag then quit()), 0) (%i204) comp_expect_sec(t_end2,t_start2,t2,clock_sec2):=block( mode_declare([[ms2,rrr,sec_left,sub1,sub2], convfloat]),ms2:clock_sec2, sub1:t_end2-t_start2,sub2:t2-t_start2, if sub1 = 0.0 then sec_left:0.0 else (if sub2 > 0.0 then (rrr:sub1/sub2, sec_left:rrr*ms2-ms2) else sec_left:0.0),sec_left) (%o204) comp_expect_sec(t_end2, t_start2, t2, clock_sec2) := block(mode_declare([[ms2, rrr, sec_left, sub1, sub2], convfloat]), ms2 : clock_sec2, sub1 : t_end2 - t_start2, sub2 : t2 - t_start2, if sub1 = 0.0 then sec_left : 0.0 else (if sub2 > 0.0 sub1 then (rrr : ----, sec_left : rrr ms2 - ms2) else sec_left : 0.0), sec_left) sub2 (%i205) comp_percent(t_end2,t_start2,t2):=block( mode_declare([[rrr,sub1,sub2],convfloat]), sub1:t_end2-t_start2,sub2:t2-t_start2, if sub2 > glob_small_float then rrr:100.0*sub2/sub1 else rrr:0.0,rrr) (%o205) comp_percent(t_end2, t_start2, t2) := block(mode_declare([[rrr, sub1, sub2], convfloat]), sub1 : t_end2 - t_start2, 100.0 sub2 sub2 : t2 - t_start2, if sub2 > glob_small_float then rrr : ---------- sub1 else rrr : 0.0, rrr) (%i206) comp_rad_from_ratio(term1,term2,last_no):=( if term2 > 0.0 then ret:abs(term1*glob_h/term2) else ret:glob_larger_float,ret) (%o206) comp_rad_from_ratio(term1, term2, last_no) := !term1 glob_h! (if term2 > 0.0 then ret : !------------! else ret : glob_larger_float, ret) ! term2 ! (%i207) comp_ord_from_ratio(term1,term2,last_no):=( if term2 > 0.0 then ret :abs(term2)*convfloat(last_no) *log(abs(term1*glob_h/term2)) /log(convfloat(last_no)) +1.0 else ret:glob_larger_float,ret) (%o207) comp_ord_from_ratio(term1, term2, last_no) := !term1 glob_h! mabs(term2) convfloat(last_no) log(!------------!) ! term2 ! (if term2 > 0.0 then ret : -------------------------------------------------- log(convfloat(last_no)) + 1.0 else ret : glob_larger_float, ret) (%i208) comp_rad_from_three_terms(term1,term2,term3,last_no):=( temp:abs( term1*term3 -term1*term3*convfloat(last_no) -2.0*term2*term2 +term2*term2*convfloat(last_no)), if temp > 0.0 then ret:abs(term2*glob_h*term1/temp) else ret:glob_larger_float,ret) (%o208) comp_rad_from_three_terms(term1, term2, term3, last_no) := (temp : mabs(term1 term3 - term1 term3 convfloat(last_no) - 2.0 term2 term2 + term2 term2 convfloat(last_no)), if temp > 0.0 !term2 glob_h term1! then ret : !------------------! else ret : glob_larger_float, ret) ! temp ! (%i209) comp_ord_from_three_terms(term1,term2,term3,last_no):=( ret:abs( (-term1*term3*convfloat(last_no*last_no) +term2*term2*convfloat(last_no*last_no) +4.0*term2*term2 -4.0*term2*term2*convfloat(last_no) -3.0*term1*term3 +4.0*term1*term3*convfloat(last_no)) /(term1*term3 -term1*term3*convfloat(last_no) -2.0*term2*term2 +term2*term2*convfloat(last_no))),ret) (%o209) comp_ord_from_three_terms(term1, term2, term3, last_no) := (ret : mabs((- term1 term3 convfloat(last_no last_no) + term2 term2 convfloat(last_no last_no) + 4.0 term2 term2 - 4.0 term2 term2 convfloat(last_no) - 3.0 term1 term3 + 4.0 term1 term3 convfloat(last_no))/(term1 term3 - term1 term3 convfloat(last_no) - 2.0 term2 term2 + term2 term2 convfloat(last_no))), ret) (%i210) comp_rad_from_six_terms(term1,term2,term3,term4,term5,term6,last_no):= ( if term5 # 0.0 and term4 # 0.0 and term3 # 0.0 and term2 # 0.0 and term1 # 0.0 then (rm0:term6/term5,rm1:term5/term4, rm2:term4/term3,rm3:term3/term2, rm4:term2/term1, nr1 :convfloat(last_no-3)*rm2 -2.0*convfloat(last_no-2)*rm1 +convfloat(last_no-1)*rm0, nr2 :convfloat(last_no-4)*rm3 -2.0*convfloat(last_no-3)*rm2 +convfloat(last_no-2)*rm1, dr1:(-1.0)/rm3+2.0/rm2+(-1.0)/rm1, dr2:(-1.0)/rm4+2.0/rm3+(-1.0)/rm2, ds1:5.0/rm3-8.0/rm2+3.0/rm1, ds2:5.0/rm4-8.0/rm3+3.0/rm2, if abs(nr1*dr2-nr2*dr1) = 0.0 or abs(dr1) = 0.0 then (rad_c:glob_larger_float, ord_no:glob_larger_float) else (if abs(nr1*dr2-nr2*dr1) # 0.0 then ( rcs :(dr1*dr2-ds2*dr1+ds1*dr2) /(nr1*dr2-nr2*dr1), ord_no :(rcs*nr1-ds1)/(2.0*dr1) -convfloat(last_no)/2.0, if abs(rcs) # 0.0 then (if rcs > 0.0 then rad_c :sqrt(rcs) *abs(glob_h) else ( rad_c :glob_larger_float, ord_no :glob_larger_float)) else ( rad_c:glob_larger_float, ord_no:glob_larger_float)) else (rad_c:glob_larger_float, ord_no:glob_larger_float))) else (rad_c:glob_larger_float, ord_no:glob_larger_float), glob_six_term_ord_save:ord_no,rad_c) (%o210) comp_rad_from_six_terms(term1, term2, term3, term4, term5, term6, last_no) := (if (term5 # 0.0) and (term4 # 0.0) and (term3 # 0.0) term6 term5 and (term2 # 0.0) and (term1 # 0.0) then (rm0 : -----, rm1 : -----, term5 term4 term4 term3 term2 rm2 : -----, rm3 : -----, rm4 : -----, term3 term2 term1 nr1 : convfloat(last_no - 3) rm2 - 2.0 convfloat(last_no - 2) rm1 + convfloat(last_no - 1) rm0, nr2 : convfloat(last_no - 4) rm3 - 2.0 convfloat(last_no - 3) rm2 + convfloat(last_no - 2) rm1, - 1.0 2.0 - 1.0 - 1.0 2.0 - 1.0 5.0 8.0 3.0 dr1 : ----- + --- + -----, dr2 : ----- + --- + -----, ds1 : --- - --- + ---, rm3 rm2 rm1 rm4 rm3 rm2 rm3 rm2 rm1 5.0 8.0 3.0 ds2 : --- - --- + ---, if (mabs(nr1 dr2 - nr2 dr1) = 0.0) or (mabs(dr1) = 0.0) rm4 rm3 rm2 then (rad_c : glob_larger_float, ord_no : glob_larger_float) else (if mabs(nr1 dr2 - nr2 dr1) # 0.0 dr1 dr2 - ds2 dr1 + ds1 dr2 then (rcs : ---------------------------, nr1 dr2 - nr2 dr1 rcs nr1 - ds1 convfloat(last_no) ord_no : ------------- - ------------------, 2.0 dr1 2.0 if mabs(rcs) # 0.0 then (if rcs > 0.0 then rad_c : sqrt(rcs) mabs(glob_h) else (rad_c : glob_larger_float, ord_no : glob_larger_float)) else (rad_c : glob_larger_float, ord_no : glob_larger_float)) else (rad_c : glob_larger_float, ord_no : glob_larger_float))) else (rad_c : glob_larger_float, ord_no : glob_larger_float), glob_six_term_ord_save : ord_no, rad_c) (%i211) comp_ord_from_six_terms(term1,term2,term3,term4,term5,term6,last_no):=glob_six_term_ord_save (%o211) comp_ord_from_six_terms(term1, term2, term3, term4, term5, term6, last_no) := glob_six_term_ord_save (%i212) factorial_2(nnn):=nnn! (%o212) factorial_2(nnn) := nnn! (%i213) factorial_1(nnn):=block(mode_declare([[ret],convfloat]), if nnn <= MAX_TERMS then (if array_fact_1[nnn] = 0 then (ret:factorial_2(nnn), array_fact_1[nnn]:ret) else ret:array_fact_1[nnn]) else ret:factorial_2(nnn),ret) (%o213) factorial_1(nnn) := block(mode_declare([[ret], convfloat]), if nnn <= MAX_TERMS then (if array_fact_1 = 0 nnn then (ret : factorial_2(nnn), array_fact_1 : ret) nnn else ret : array_fact_1 ) else ret : factorial_2(nnn), ret) nnn (%i214) factorial_3(mmm,nnn):=block(mode_declare([[ret],convfloat]), if nnn <= MAX_TERMS and mmm <= MAX_TERMS then (if array_fact_2[mmm,nnn] = 0 then (ret:factorial_1(mmm)/factorial_1(nnn), array_fact_2[mmm,nnn]:ret) else ret:array_fact_2[mmm,nnn]) else ret:factorial_2(mmm)/factorial_2(nnn),ret) (%o214) factorial_3(mmm, nnn) := block(mode_declare([[ret], convfloat]), if (nnn <= MAX_TERMS) and (mmm <= MAX_TERMS) factorial_1(mmm) then (if array_fact_2 = 0 then (ret : ----------------, mmm, nnn factorial_1(nnn) array_fact_2 : ret) else ret : array_fact_2 ) mmm, nnn mmm, nnn factorial_2(mmm) else ret : ----------------, ret) factorial_2(nnn) (%i215) log10(x):=log(x)/glob_log_10 log(x) (%o215) log10(x) := ----------- glob_log_10 (%i216) expt(x,y):=(if x <= 0.0 and y < 0.0 then print("expt error x = ",x,"y = ",y),x^y) (%o216) expt(x, y) := (if (x <= 0.0) and (y < 0.0) y then print("expt error x = ", x, "y = ", y), x ) (%i217) estimated_needed_step_error(x_start,x_end,estimated_h, estimated_answer):=block( [desired_abs_gbl_error,range, estimated_steps,step_error], omniout_float(ALWAYS, "glob_desired_digits_correct", 32, glob_desired_digits_correct, 32,""), desired_abs_gbl_error :expt(10.0,-glob_desired_digits_correct) *abs(estimated_answer), omniout_float(ALWAYS,"estimated_h",32, estimated_h,32,""), omniout_float(ALWAYS,"estimated_answer", 32,estimated_answer,32,""), omniout_float(ALWAYS, "desired_abs_gbl_error",32, desired_abs_gbl_error,32, ""),range:x_end-x_start, omniout_float(ALWAYS,"range",32,range,32, ""), estimated_steps:range/estimated_h, omniout_float(ALWAYS,"estimated_steps",32, estimated_steps,32,""), step_error :abs( desired_abs_gbl_error/estimated_steps), omniout_float(ALWAYS,"step_error",32, step_error,32,""), step_error) (%o217) estimated_needed_step_error(x_start, x_end, estimated_h, estimated_answer) := block([desired_abs_gbl_error, range, estimated_steps, step_error], omniout_float(ALWAYS, "glob_desired_digits_correct", 32, glob_desired_digits_correct, 32, ""), desired_abs_gbl_error : expt(10.0, - glob_desired_digits_correct) mabs(estimated_answer), omniout_float(ALWAYS, "estimated_h", 32, estimated_h, 32, ""), omniout_float(ALWAYS, "estimated_answer", 32, estimated_answer, 32, ""), omniout_float(ALWAYS, "desired_abs_gbl_error", 32, desired_abs_gbl_error, 32, ""), range : x_end - x_start, omniout_float(ALWAYS, "range", 32, range, 32, range ""), estimated_steps : -----------, omniout_float(ALWAYS, "estimated_steps", estimated_h !desired_abs_gbl_error! 32, estimated_steps, 32, ""), step_error : !---------------------!, ! estimated_steps ! omniout_float(ALWAYS, "step_error", 32, step_error, 32, ""), step_error) (%i218) exact_soln_y(x):=block(expt(2.0,sin(x))) (%o218) exact_soln_y(x) := block(expt(2.0, sin(x))) (%i219) display_poles():=( block(mode_declare([[rad_given],convfloat]), if glob_type_given_pole = 4 then (rad_given :sqrt( array_given_rad_poles[1,2] *array_given_rad_poles[1,2] +(array_x[1] -array_given_rad_poles[1,1]) *(array_x[1] -array_given_rad_poles[1,1])), if rad_given < glob_least_given_sing then glob_least_given_sing :rad_given, omniout_float(ALWAYS, "Radius of convergence (given) for eq 1 ", 4,rad_given,4," "), omniout_float(ALWAYS, "Order of pole (given) ", 4, array_given_ord_poles[ 1,1],4," ")) elseif glob_type_given_pole = 3 then omniout_str(ALWAYS, "NO POLE (given) for Equation 1") else omniout_str(ALWAYS, "NO INFO (given) for Equation 1"), if array_rad_test_poles[1,1] < glob_large_float then (omniout_float(ALWAYS, "Radius of convergence (ratio test) for eq 1 ", 4, array_rad_test_poles[1,1], 4," "), if array_rad_test_poles[1,1] < glob_least_ratio_sing then glob_least_ratio_sing :array_rad_test_poles[1,1], omniout_float(ALWAYS, "Order of pole (ratio test) ", 4, array_ord_test_poles[1,1], 4," ")) else omniout_str(ALWAYS, "NO POLE (ratio test) for Equation 1"), if array_rad_test_poles[1,2] > 0.0 and array_rad_test_poles[1,2] < glob_large_float then (omniout_float(ALWAYS, "Radius of convergence (three term test) for eq 1 ", 4, array_rad_test_poles[1,2], 4," "), if array_rad_test_poles[1,2] < glob_least_3_sing then glob_least_3_sing :array_rad_test_poles[1,2], omniout_float(ALWAYS, "Order of pole (three term test) ", 4, array_ord_test_poles[1,2], 4," ")) else omniout_str(ALWAYS, "NO REAL POLE (three term test) for Equation 1"), if array_rad_test_poles[1,3] > 0.0 and array_rad_test_poles[1,3] < glob_large_float then (omniout_float(ALWAYS, "Radius of convergence (six term test) for eq 1 ", 4, array_rad_test_poles[1,3], 4," "), if array_rad_test_poles[1,3] < glob_least_6_sing then glob_least_6_sing :array_rad_test_poles[1,3], omniout_float(ALWAYS, "Order of pole (six term test) ", 4, array_ord_test_poles[1,3], 4," ")) else omniout_str(ALWAYS, "NO COMPLEX POLE (six term test) for Equation 1")), 0) (%o219) display_poles() := (block(mode_declare([[rad_given], convfloat]), if glob_type_given_pole = 4 then (rad_given : sqrt(array_given_rad_poles array_given_rad_poles 1, 2 1, 2 + (array_x - array_given_rad_poles ) 1 1, 1 (array_x - array_given_rad_poles )), 1 1, 1 if rad_given < glob_least_given_sing then glob_least_given_sing : rad_given, omniout_float(ALWAYS, "Radius of convergence (given) for eq 1 ", 4, rad_given, 4, " "), omniout_float(ALWAYS, "Order of pole (given) ", 4, array_given_ord_poles , 4, " ")) elseif glob_type_given_pole = 3 1, 1 then omniout_str(ALWAYS, "NO POLE (given) for Equation 1") else omniout_str(ALWAYS, "NO INFO (given) for Equation 1"), if array_rad_test_poles < glob_large_float then (omniout_float(ALWAYS, "Ra\ 1, 1 dius of convergence (ratio test) for eq 1 ", 4, array_rad_test_poles , 4, " "), if array_rad_test_poles < 1, 1 1, 1 glob_least_ratio_sing then glob_least_ratio_sing : array_rad_test_poles , 1, 1 omniout_float(ALWAYS, "Order of pole (ratio test) ", 4, array_ord_test_poles , 4, " ")) else omniout_str(ALWAYS, 1, 1 "NO POLE (ratio test) for Equation 1"), if (array_rad_test_poles > 0.0) and (array_rad_test_poles < glob_large_float) 1, 2 1, 2 then (omniout_float(ALWAYS, "Radius of convergence (three term test) for eq 1 ", 4, array_rad_test_poles , 4, " "), if array_rad_test_poles < 1, 2 1, 2 glob_least_3_sing then glob_least_3_sing : array_rad_test_poles , 1, 2 omniout_float(ALWAYS, "Order of pole (three term test) ", 4, array_ord_test_poles , 4, " ")) else omniout_str(ALWAYS, 1, 2 "NO REAL POLE (three term test) for Equation 1"), if (array_rad_test_poles > 0.0) and (array_rad_test_poles < 1, 3 1, 3 glob_large_float) then (omniout_float(ALWAYS, "Radius of convergence (six term test) for eq 1 ", 4, array_rad_test_poles , 4, " "), if array_rad_test_poles < 1, 3 1, 3 glob_least_6_sing then glob_least_6_sing : array_rad_test_poles , 1, 3 omniout_float(ALWAYS, "Order of pole (six term test) ", 4, array_ord_test_poles , 4, " ")) else omniout_str(ALWAYS, 1, 3 "NO COMPLEX POLE (six term test) for Equation 1")), 0) (%i220) my_check_sign(x0,xf):=block([ret],if xf > x0 then ret:1.0 else ret:-1.0,ret) (%o220) my_check_sign(x0, xf) := block([ret], if xf > x0 then ret : 1.0 else ret : - 1.0, ret) (%i221) est_size_answer():=block([min_size], min_size:glob_estimated_size_answer, if abs(array_y[1]) < min_size then (min_size:abs(array_y[1]), omniout_float(ALWAYS,"min_size",32,min_size, 32,"")), if min_size < 1.0 then (min_size:1.0, omniout_float(ALWAYS,"min_size",32,min_size, 32,"")),min_size) (%o221) est_size_answer() := block([min_size], min_size : glob_estimated_size_answer, if !array_y ! < min_size then (min_size : !array_y !, ! 1! ! 1! omniout_float(ALWAYS, "min_size", 32, min_size, 32, "")), if min_size < 1.0 then (min_size : 1.0, omniout_float(ALWAYS, "min_size", 32, min_size, 32, "")), min_size) (%i222) test_suggested_h():=block( [max_estimated_step_error,hn_div_ho,hn_div_ho_2, hn_div_ho_3,no_terms,est_tmp], max_estimated_step_error:0.0,no_terms:MAX_TERMS, hn_div_ho:0.5,hn_div_ho_2:0.25,hn_div_ho_3:0.125, omniout_float(ALWAYS,"hn_div_ho",32,hn_div_ho,32,""), omniout_float(ALWAYS,"hn_div_ho_2",32,hn_div_ho_2,32, ""), omniout_float(ALWAYS,"hn_div_ho_3",32,hn_div_ho_3,32, ""), est_tmp:abs(array_y[no_terms]*hn_div_ho_3 +array_y[no_terms-1]*hn_div_ho_2 +array_y[no_terms-2]*hn_div_ho +array_y[no_terms-3]), if est_tmp >= max_estimated_step_error then max_estimated_step_error:est_tmp, omniout_float(ALWAYS,"max_estimated_step_error",32, max_estimated_step_error,32,""), max_estimated_step_error) (%o222) test_suggested_h() := block([max_estimated_step_error, hn_div_ho, hn_div_ho_2, hn_div_ho_3, no_terms, est_tmp], max_estimated_step_error : 0.0, no_terms : MAX_TERMS, hn_div_ho : 0.5, hn_div_ho_2 : 0.25, hn_div_ho_3 : 0.125, omniout_float(ALWAYS, "hn_div_ho", 32, hn_div_ho, 32, ""), omniout_float(ALWAYS, "hn_div_ho_2", 32, hn_div_ho_2, 32, ""), omniout_float(ALWAYS, "hn_div_ho_3", 32, hn_div_ho_3, 32, ""), est_tmp : mabs(array_y hn_div_ho_3 + array_y hn_div_ho_2 no_terms no_terms - 1 + array_y hn_div_ho + array_y ), no_terms - 2 no_terms - 3 if est_tmp >= max_estimated_step_error then max_estimated_step_error : est_tmp, omniout_float(ALWAYS, "max_estimated_step_error", 32, max_estimated_step_error, 32, ""), max_estimated_step_error) (%i223) reached_interval():=block(mode_declare([[ret],boolean]), if glob_check_sign*array_x[1] >= glob_check_sign*glob_next_display then ret:true else ret:false,return(ret)) (%o223) reached_interval() := block(mode_declare([[ret], boolean]), if glob_check_sign array_x >= glob_check_sign glob_next_display 1 then ret : true else ret : false, return(ret)) (%i224) display_alot(iter):=( block(mode_declare( [[abserr],convfloat,[analytic_val_y],convfloat, [ind_var],convfloat,[numeric_val],convfloat, [relerr],convfloat,[term_no],fixnum]), if reached_interval() then (if iter >= 0 then (ind_var:array_x[1], omniout_float(ALWAYS, "x[1] ", 33,ind_var,20, " "), analytic_val_y :exact_soln_y(ind_var), omniout_float(ALWAYS, "y[1] (analytic) ", 33, analytic_val_y, 20," "), term_no:1, numeric_val:array_y[term_no], abserr :abs( numeric_val-analytic_val_y), omniout_float(ALWAYS, "y[1] (numeric) ", 33,numeric_val, 20," "), if abs(analytic_val_y) # 0.0 then ( relerr :abserr*100.0 /abs(analytic_val_y), if relerr > 1.0E-34 then glob_good_digits :3-floor(log10(relerr)) else glob_good_digits :16) else (relerr:-1.0, glob_good_digits:-1), if glob_iter = 1 then array_1st_rel_error[1] :relerr else array_last_rel_error[ 1] :relerr, omniout_float(ALWAYS, "absolute error ", 4,abserr,20," "), omniout_float(ALWAYS, "relative error ", 4,relerr,20,"%"), omniout_int(INFO, "Correct digits ", 32, glob_good_digits,4, " "), omniout_float(ALWAYS, "h ", 4,glob_h,20, " ")))),0) (%o224) display_alot(iter) := (block(mode_declare([[abserr], convfloat, [analytic_val_y], convfloat, [ind_var], convfloat, [numeric_val], convfloat, [relerr], convfloat, [term_no], fixnum]), if reached_interval() then (if iter >= 0 then (ind_var : array_x , omniout_float(ALWAYS, 1 "x[1] ", 33, ind_var, 20, " "), analytic_val_y : exact_soln_y(ind_var), omniout_float(ALWAYS, "y[1] (analytic) ", 33, analytic_val_y, 20, " "), term_no : 1, numeric_val : array_y , term_no abserr : mabs(numeric_val - analytic_val_y), omniout_float(ALWAYS, "y[1] (numeric) ", 33, numeric_val, 20, " "), if mabs(analytic_val_y) # 0.0 abserr 100.0 then (relerr : --------------------, if relerr > 1.0E-34 mabs(analytic_val_y) then glob_good_digits : 3 - floor(log10(relerr)) else glob_good_digits : 16) else (relerr : - 1.0, glob_good_digits : - 1), if glob_iter = 1 then array_1st_rel_error : relerr 1 else array_last_rel_error : relerr, omniout_float(ALWAYS, 1 "absolute error ", 4, abserr, 20, " "), omniout_float(ALWAYS, "relative error ", 4, relerr, 20, "%"), omniout_int(INFO, "Correct digits ", 32, glob_good_digits, 4, " "), omniout_float(ALWAYS, "h ", 4, glob_h, 20, " ")))), 0) (%i225) adjust_for_pole(h_param):=( block(mode_declare( [[hnew],convfloat,[sz2],convfloat,[tmp], convfloat]),hnew:h_param, glob_normmax:glob_small_float, if abs(array_y_higher[1,1]) > glob_small_float then (tmp:abs(array_y_higher[1,1]), if tmp < glob_normmax then glob_normmax:tmp), if glob_look_poles and glob_min_pole_est > glob_small_float and glob_min_pole_est < glob_large_float then (sz2:glob_min_pole_est/10.0, if sz2 < hnew then ( omniout_float(INFO, "glob_h adjusted to ", 20,h_param,12, "due to singularity."), omniout_str(INFO, "Reached Optimal"), return(hnew))), if not glob_reached_optimal_h then (glob_reached_optimal_h:true, glob_curr_iter_when_opt :glob_current_iter, glob_optimal_clock_start_sec :elapsed_time_seconds(), glob_optimal_start:array_x[1]), hnew:sz2),hnew) (%o225) adjust_for_pole(h_param) := (block(mode_declare([[hnew], convfloat, [sz2], convfloat, [tmp], convfloat]), hnew : h_param, glob_normmax : glob_small_float, if !array_y_higher ! > glob_small_float ! 1, 1! then (tmp : !array_y_higher !, if tmp < glob_normmax ! 1, 1! then glob_normmax : tmp), if glob_look_poles and (glob_min_pole_est > glob_small_float) and (glob_min_pole_est < glob_large_float) glob_min_pole_est then (sz2 : -----------------, if sz2 < hnew 10.0 then (omniout_float(INFO, "glob_h adjusted to ", 20, h_param, 12, "due to singularity."), omniout_str(INFO, "Reached Optimal"), return(hnew))), if not glob_reached_optimal_h then (glob_reached_optimal_h : true, glob_curr_iter_when_opt : glob_current_iter, glob_optimal_clock_start_sec : elapsed_time_seconds(), glob_optimal_start : array_x ), hnew : sz2), hnew) 1 (%i226) prog_report(x_start,x_end):=( block(mode_declare([[clock_sec],convfloat,[opt_clock_sec], convfloat,[clock_sec1],convfloat, [expect_sec],convfloat,[left_sec], convfloat,[percent_done],convfloat, [total_clock_sec],convfloat]), clock_sec1:elapsed_time_seconds(), total_clock_sec:clock_sec1-glob_orig_start_sec, glob_clock_sec:clock_sec1-glob_clock_start_sec, left_sec:-clock_sec1+glob_orig_start_sec +glob_max_sec, expect_sec:comp_expect_sec(x_end,x_start, glob_h+array_x[1], clock_sec1 -glob_orig_start_sec), opt_clock_sec:clock_sec1 -glob_optimal_clock_start_sec, glob_optimal_expect_sec :comp_expect_sec(x_end,x_start,glob_h+array_x[1], opt_clock_sec), glob_total_exp_sec :total_clock_sec+glob_optimal_expect_sec, percent_done:comp_percent(x_end,x_start, glob_h+array_x[1]), glob_percent_done:percent_done, omniout_str_noeol(INFO, "Total Elapsed Time "), omniout_timestr(total_clock_sec), omniout_str_noeol(INFO, "Elapsed Time(since restart) "), omniout_timestr(glob_clock_sec), if percent_done < 100.0 then (omniout_str_noeol(INFO, "Expected Time Remaining "), omniout_timestr(expect_sec), omniout_str_noeol(INFO, "Optimized Time Remaining "), omniout_timestr(glob_optimal_expect_sec), omniout_str_noeol(INFO, "Expected Total Time "), omniout_timestr(glob_total_exp_sec)), omniout_str_noeol(INFO, "Time to Timeout "), omniout_timestr(left_sec), omniout_float(INFO, "Percent Done ",33, percent_done,4,"%")),0) (%o226) prog_report(x_start, x_end) := (block(mode_declare([[clock_sec], convfloat, [opt_clock_sec], convfloat, [clock_sec1], convfloat, [expect_sec], convfloat, [left_sec], convfloat, [percent_done], convfloat, [total_clock_sec], convfloat]), clock_sec1 : elapsed_time_seconds(), total_clock_sec : clock_sec1 - glob_orig_start_sec, glob_clock_sec : clock_sec1 - glob_clock_start_sec, left_sec : - clock_sec1 + glob_orig_start_sec + glob_max_sec, expect_sec : comp_expect_sec(x_end, x_start, glob_h + array_x , 1 clock_sec1 - glob_orig_start_sec), opt_clock_sec : clock_sec1 - glob_optimal_clock_start_sec, glob_optimal_expect_sec : comp_expect_sec(x_end, x_start, glob_h + array_x , 1 opt_clock_sec), glob_total_exp_sec : total_clock_sec + glob_optimal_expect_sec, percent_done : comp_percent(x_end, x_start, glob_h + array_x ), 1 glob_percent_done : percent_done, omniout_str_noeol(INFO, "Total Elapsed Time "), omniout_timestr(total_clock_sec), omniout_str_noeol(INFO, "Elapsed Time(since restart) "), omniout_timestr(glob_clock_sec), if percent_done < 100.0 then (omniout_str_noeol(INFO, "Expected Time Remaining "), omniout_timestr(expect_sec), omniout_str_noeol(INFO, "Optimized Time Remaining "), omniout_timestr(glob_optimal_expect_sec), omniout_str_noeol(INFO, "Expected Total Time "), omniout_timestr(glob_total_exp_sec)), omniout_str_noeol(INFO, "Time to Timeout "), omniout_timestr(left_sec), omniout_float(INFO, "Percent Done ", 33, percent_done, 4, "%")), 0) (%i227) check_for_pole():=( block(mode_declare([cnt],fixnum,[dr1,dr2,ds1,ds2,hdrc], convfloat,[m,n],fixnum,[nr1,nr2], convfloat,[ord_no],fixnum, [term1,term2,term3,part1,part2, part3,part4,part5,part6,part7, part8,part9,part10,part11,part12, part13,part14,rad_c,rcs,rm0,rm1, rm2,rm3,rm4],convfloat, [found_sing],fixnum, [h_new,ratio,term,local_test, tmp_rad,tmp_ord,tmp_ratio, prev_tmp_rad],convfloat,[last_no], fixnum), glob_min_pole_est:glob_larger_float, tmp_rad:glob_larger_float, prev_tmp_rad:glob_larger_float, tmp_ratio:glob_larger_float, rad_c:glob_larger_float, array_rad_test_poles[1,1]:glob_larger_float, array_ord_test_poles[1,1]:glob_larger_float, found_sing:1,last_no:-10-1+MAX_TERMS,cnt:0, while last_no < MAX_TERMS-3 and found_sing = 1 do (tmp_rad :comp_rad_from_ratio( array_y_higher[1,last_no-1], array_y_higher[1,last_no],last_no), tmp_ratio:tmp_rad/prev_tmp_rad, if cnt > 0 and tmp_ratio < glob_upper_ratio_limit and tmp_ratio > glob_lower_ratio_limit then rad_c:tmp_rad elseif cnt = 0 then rad_c:tmp_rad elseif cnt > 0 then found_sing:0, prev_tmp_rad:tmp_rad,cnt:1+cnt, last_no:1+last_no), if found_sing = 1 then (if rad_c < array_rad_test_poles[1,1] then ( array_rad_test_poles[1,1]:rad_c, last_no:last_no-1, tmp_ord :comp_ord_from_ratio( array_y_higher[1,last_no-1], array_y_higher[1,last_no], last_no), array_rad_test_poles[1,1]:rad_c, array_ord_test_poles[1,1] :tmp_ord)), glob_min_pole_est:glob_larger_float, tmp_rad:glob_larger_float, prev_tmp_rad:glob_larger_float, tmp_ratio:glob_larger_float, rad_c:glob_larger_float, array_rad_test_poles[1,2]:glob_larger_float, array_ord_test_poles[1,2]:glob_larger_float, found_sing:1,last_no:-10-1+MAX_TERMS,cnt:0, while last_no < MAX_TERMS-4 and found_sing = 1 do (tmp_rad :comp_rad_from_three_terms( array_y_higher[1,last_no-2], array_y_higher[1,last_no-1], array_y_higher[1,last_no],last_no), tmp_ratio:tmp_rad/prev_tmp_rad, if cnt > 0 and tmp_ratio < glob_upper_ratio_limit and tmp_ratio > glob_lower_ratio_limit then rad_c:tmp_rad elseif cnt = 0 then rad_c:tmp_rad elseif cnt > 0 then found_sing:0, prev_tmp_rad:tmp_rad,cnt:1+cnt, last_no:1+last_no), if found_sing = 1 then (if rad_c < array_rad_test_poles[1,2] then ( array_rad_test_poles[1,2]:rad_c, last_no:last_no-1, tmp_ord :comp_ord_from_three_terms( array_y_higher[1,last_no-2], array_y_higher[1,last_no-1], array_y_higher[1,last_no], last_no), array_rad_test_poles[1,2]:rad_c, if rad_c < glob_min_pole_est then glob_min_pole_est:rad_c, array_ord_test_poles[1,2] :tmp_ord)), glob_min_pole_est:glob_larger_float, tmp_rad:glob_larger_float, prev_tmp_rad:glob_larger_float, tmp_ratio:glob_larger_float, rad_c:glob_larger_float, array_rad_test_poles[1,3]:glob_larger_float, array_ord_test_poles[1,3]:glob_larger_float, found_sing:1,last_no:-10-1+MAX_TERMS,cnt:0, while last_no < MAX_TERMS-7 and found_sing = 1 do (tmp_rad :comp_rad_from_six_terms( array_y_higher[1,last_no-5], array_y_higher[1,last_no-4], array_y_higher[1,last_no-3], array_y_higher[1,last_no-2], array_y_higher[1,last_no-1], array_y_higher[1,last_no],last_no), tmp_ratio:tmp_rad/prev_tmp_rad, if cnt > 0 and tmp_ratio < glob_upper_ratio_limit and tmp_ratio > glob_lower_ratio_limit then rad_c:tmp_rad elseif cnt = 0 then rad_c:tmp_rad elseif cnt > 0 then found_sing:0, prev_tmp_rad:tmp_rad,cnt:1+cnt, last_no:1+last_no), if found_sing = 1 then (if rad_c < array_rad_test_poles[1,3] then ( array_rad_test_poles[1,3]:rad_c, last_no:last_no-1, tmp_ord :comp_ord_from_six_terms( array_y_higher[1,last_no-5], array_y_higher[1,last_no-4], array_y_higher[1,last_no-3], array_y_higher[1,last_no-2], array_y_higher[1,last_no-1], array_y_higher[1,last_no], last_no), array_rad_test_poles[1,3]:rad_c, if rad_c < glob_min_pole_est then glob_min_pole_est:rad_c, array_ord_test_poles[1,3] :tmp_ord)), if abs(glob_min_pole_est)*glob_ratio_of_radius < abs(glob_h) then (h_new :glob_check_sign*glob_min_pole_est *glob_ratio_of_radius, term:1,ratio:1.0, while term <= MAX_TERMS do ( array_y[term] :array_y[term]*ratio, array_y_higher[1,term] :array_y_higher[1,term]*ratio, array_x[term] :array_x[term]*ratio, ratio:ratio*h_new/abs(glob_h), term:1+term),glob_h:h_new), if reached_interval() then display_poles()),0) (%o227) check_for_pole() := (block(mode_declare([cnt], fixnum, [dr1, dr2, ds1, ds2, hdrc], convfloat, [m, n], fixnum, [nr1, nr2], convfloat, [ord_no], fixnum, [term1, term2, term3, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, rad_c, rcs, rm0, rm1, rm2, rm3, rm4], convfloat, [found_sing], fixnum, [h_new, ratio, term, local_test, tmp_rad, tmp_ord, tmp_ratio, prev_tmp_rad], convfloat, [last_no], fixnum), glob_min_pole_est : glob_larger_float, tmp_rad : glob_larger_float, prev_tmp_rad : glob_larger_float, tmp_ratio : glob_larger_float, rad_c : glob_larger_float, array_rad_test_poles : glob_larger_float, 1, 1 array_ord_test_poles : glob_larger_float, found_sing : 1, 1, 1 last_no : - 10 - 1 + MAX_TERMS, cnt : 0, while (last_no < MAX_TERMS - 3) and (found_sing = 1) do (tmp_rad : comp_rad_from_ratio(array_y_higher , array_y_higher , 1, last_no - 1 1, last_no tmp_rad last_no), tmp_ratio : ------------, if (cnt > 0) prev_tmp_rad and (tmp_ratio < glob_upper_ratio_limit) and (tmp_ratio > glob_lower_ratio_limit) then rad_c : tmp_rad elseif cnt = 0 then rad_c : tmp_rad elseif cnt > 0 then found_sing : 0, prev_tmp_rad : tmp_rad, cnt : 1 + cnt, last_no : 1 + last_no), if found_sing = 1 then (if rad_c < array_rad_test_poles 1, 1 then (array_rad_test_poles : rad_c, last_no : last_no - 1, 1, 1 tmp_ord : comp_ord_from_ratio(array_y_higher , 1, last_no - 1 array_y_higher , last_no), array_rad_test_poles : rad_c, 1, last_no 1, 1 array_ord_test_poles : tmp_ord)), glob_min_pole_est : glob_larger_float, 1, 1 tmp_rad : glob_larger_float, prev_tmp_rad : glob_larger_float, tmp_ratio : glob_larger_float, rad_c : glob_larger_float, array_rad_test_poles : glob_larger_float, 1, 2 array_ord_test_poles : glob_larger_float, found_sing : 1, 1, 2 last_no : - 10 - 1 + MAX_TERMS, cnt : 0, while (last_no < MAX_TERMS - 4) and (found_sing = 1) do (tmp_rad : comp_rad_from_three_terms(array_y_higher , 1, last_no - 2 array_y_higher , array_y_higher , last_no), 1, last_no - 1 1, last_no tmp_rad tmp_ratio : ------------, if (cnt > 0) and (tmp_ratio < glob_upper_ratio_limit) prev_tmp_rad and (tmp_ratio > glob_lower_ratio_limit) then rad_c : tmp_rad elseif cnt = 0 then rad_c : tmp_rad elseif cnt > 0 then found_sing : 0, prev_tmp_rad : tmp_rad, cnt : 1 + cnt, last_no : 1 + last_no), if found_sing = 1 then (if rad_c < array_rad_test_poles 1, 2 then (array_rad_test_poles : rad_c, last_no : last_no - 1, 1, 2 tmp_ord : comp_ord_from_three_terms(array_y_higher , 1, last_no - 2 array_y_higher , array_y_higher , last_no), 1, last_no - 1 1, last_no array_rad_test_poles : rad_c, if rad_c < glob_min_pole_est 1, 2 then glob_min_pole_est : rad_c, array_ord_test_poles : tmp_ord)), 1, 2 glob_min_pole_est : glob_larger_float, tmp_rad : glob_larger_float, prev_tmp_rad : glob_larger_float, tmp_ratio : glob_larger_float, rad_c : glob_larger_float, array_rad_test_poles : glob_larger_float, 1, 3 array_ord_test_poles : glob_larger_float, found_sing : 1, 1, 3 last_no : - 10 - 1 + MAX_TERMS, cnt : 0, while (last_no < MAX_TERMS - 7) and (found_sing = 1) do (tmp_rad : comp_rad_from_six_terms(array_y_higher , 1, last_no - 5 array_y_higher , array_y_higher , 1, last_no - 4 1, last_no - 3 array_y_higher , array_y_higher , 1, last_no - 2 1, last_no - 1 tmp_rad array_y_higher , last_no), tmp_ratio : ------------, 1, last_no prev_tmp_rad if (cnt > 0) and (tmp_ratio < glob_upper_ratio_limit) and (tmp_ratio > glob_lower_ratio_limit) then rad_c : tmp_rad elseif cnt = 0 then rad_c : tmp_rad elseif cnt > 0 then found_sing : 0, prev_tmp_rad : tmp_rad, cnt : 1 + cnt, last_no : 1 + last_no), if found_sing = 1 then (if rad_c < array_rad_test_poles 1, 3 then (array_rad_test_poles : rad_c, last_no : last_no - 1, 1, 3 tmp_ord : comp_ord_from_six_terms(array_y_higher , 1, last_no - 5 array_y_higher , array_y_higher , 1, last_no - 4 1, last_no - 3 array_y_higher , array_y_higher , 1, last_no - 2 1, last_no - 1 array_y_higher , last_no), array_rad_test_poles : rad_c, 1, last_no 1, 3 if rad_c < glob_min_pole_est then glob_min_pole_est : rad_c, array_ord_test_poles : tmp_ord)), if mabs(glob_min_pole_est) 1, 3 glob_ratio_of_radius < mabs(glob_h) then (h_new : glob_check_sign glob_min_pole_est glob_ratio_of_radius, term : 1, ratio : 1.0, while term <= MAX_TERMS do (array_y : array_y ratio, term term array_y_higher : array_y_higher ratio, 1, term 1, term ratio h_new array_x : array_x ratio, ratio : ------------, term : 1 + term), term term mabs(glob_h) glob_h : h_new), if reached_interval() then display_poles()), 0) (%i228) atomall():=( block(mode_declare([[kkk,order_d],fixnum, [adj2,adj3,temporary,term,temp,temp2], convfloat]),array_tmp1[1]:sin(array_x[1]), array_tmp1_g[1]:cos(array_x[1]), array_tmp2[1]:expt(array_const_2D0[1],array_tmp1[1]), array_tmp2_c1[1]:log(array_const_2D0[1]), array_tmp3[1]:cos(array_x[1]), array_tmp3_g[1]:sin(array_x[1]), array_tmp4[1]:array_tmp2[1]*array_tmp3[1], array_tmp5[1]:log(array_const_2D0[1]), array_tmp6[1]:array_tmp4[1]*array_tmp5[1], array_tmp7[1]:array_tmp6[1]+array_const_0D0[1], if not array_y_set_initial[1,2] then (if 1 <= MAX_TERMS then ( temporary :array_tmp7[1]*expt(glob_h,1) *factorial_3(0,1), if 2 <= MAX_TERMS then (array_y[2]:temporary, array_y_higher[1,2]:temporary), temporary:temporary*1.0/glob_h, array_y_higher[2,1]:temporary,0)),kkk:2, array_tmp1[2]:array_tmp1_g[1]*array_x[2]/1, array_tmp1_g[2]:(-array_tmp1[1]*array_x[2])/1, array_tmp2[2]:att(1,array_tmp2,array_tmp1,1) *array_tmp2_c1[1], array_tmp3[2]:(-array_tmp3_g[1]*array_x[2])/1, array_tmp3_g[2]:array_tmp3[1]*array_x[2]/1, array_tmp4[2]:ats(2,array_tmp2,array_tmp3,1), array_tmp6[2]:array_tmp4[2]*array_tmp5[1], array_tmp7[2]:array_tmp6[2], if not array_y_set_initial[1,3] then (if 2 <= MAX_TERMS then ( temporary :array_tmp7[2]*expt(glob_h,1) *factorial_3(1,2), if 3 <= MAX_TERMS then (array_y[3]:temporary, array_y_higher[1,3]:temporary), temporary:temporary*2.0/glob_h, array_y_higher[2,2]:temporary,0)),kkk:3, array_tmp1[3]:array_tmp1_g[2]*array_x[2]/2, array_tmp1_g[3]:(-array_tmp1[2]*array_x[2])/2, array_tmp2[3]:att(2,array_tmp2,array_tmp1,1) *array_tmp2_c1[1], array_tmp3[3]:(-array_tmp3_g[2]*array_x[2])/2, array_tmp3_g[3]:array_tmp3[2]*array_x[2]/2, array_tmp4[3]:ats(3,array_tmp2,array_tmp3,1), array_tmp6[3]:array_tmp4[3]*array_tmp5[1], array_tmp7[3]:array_tmp6[3], if not array_y_set_initial[1,4] then (if 3 <= MAX_TERMS then ( temporary :array_tmp7[3]*expt(glob_h,1) *factorial_3(2,3), if 4 <= MAX_TERMS then (array_y[4]:temporary, array_y_higher[1,4]:temporary), temporary:temporary*3.0/glob_h, array_y_higher[2,3]:temporary,0)),kkk:4, array_tmp1[4]:array_tmp1_g[3]*array_x[2]/3, array_tmp1_g[4]:(-array_tmp1[3]*array_x[2])/3, array_tmp2[4]:att(3,array_tmp2,array_tmp1,1) *array_tmp2_c1[1], array_tmp3[4]:(-array_tmp3_g[3]*array_x[2])/3, array_tmp3_g[4]:array_tmp3[3]*array_x[2]/3, array_tmp4[4]:ats(4,array_tmp2,array_tmp3,1), array_tmp6[4]:array_tmp4[4]*array_tmp5[1], array_tmp7[4]:array_tmp6[4], if not array_y_set_initial[1,5] then (if 4 <= MAX_TERMS then ( temporary :array_tmp7[4]*expt(glob_h,1) *factorial_3(3,4), if 5 <= MAX_TERMS then (array_y[5]:temporary, array_y_higher[1,5]:temporary), temporary:temporary*4.0/glob_h, array_y_higher[2,4]:temporary,0)),kkk:5, array_tmp1[5]:array_tmp1_g[4]*array_x[2]/4, array_tmp1_g[5]:(-array_tmp1[4]*array_x[2])/4, array_tmp2[5]:att(4,array_tmp2,array_tmp1,1) *array_tmp2_c1[1], array_tmp3[5]:(-array_tmp3_g[4]*array_x[2])/4, array_tmp3_g[5]:array_tmp3[4]*array_x[2]/4, array_tmp4[5]:ats(5,array_tmp2,array_tmp3,1), array_tmp6[5]:array_tmp4[5]*array_tmp5[1], array_tmp7[5]:array_tmp6[5], if not array_y_set_initial[1,6] then (if 5 <= MAX_TERMS then ( temporary :array_tmp7[5]*expt(glob_h,1) *factorial_3(4,5), if 6 <= MAX_TERMS then (array_y[6]:temporary, array_y_higher[1,6]:temporary), temporary:temporary*5.0/glob_h, array_y_higher[2,5]:temporary,0)),kkk:6, while kkk <= MAX_TERMS do (array_tmp1[kkk] :array_tmp1_g[kkk-1]*array_x[2]/(kkk-1), array_tmp1_g[kkk] :(-array_tmp1[kkk-1]*array_x[2])/(kkk-1), array_tmp2[kkk] :att(kkk-1,array_tmp2,array_tmp1,1) *array_tmp2_c1[1], array_tmp3[kkk] :(-array_tmp3_g[kkk-1]*array_x[2])/(kkk-1), array_tmp3_g[kkk] :array_tmp3[kkk-1]*array_x[2]/(kkk-1), array_tmp4[kkk]:ats(kkk,array_tmp2,array_tmp3,1), array_tmp6[kkk]:array_tmp4[kkk]*array_tmp5[1], array_tmp7[kkk]:array_tmp6[kkk],order_d:1, if order_d+kkk <= MAX_TERMS then (if not array_y_set_initial[1,order_d+kkk] then ( temporary :array_tmp7[kkk]*expt(glob_h,order_d) *factorial_3(kkk-1, -1+order_d +kkk), array_y[order_d+kkk]:temporary, array_y_higher[1,order_d+kkk]:temporary, term:-1+order_d+kkk,adj2:-1+order_d+kkk, adj3:2, while term >= 1 and term <= MAX_TERMS and adj3 < 1+order_d do ( if adj3 <= 1+order_d then ( if adj2 > 0 then temporary :temporary*adj2/glob_h else temporary:temporary, array_y_higher[adj3,term] :temporary),term:term-1, adj2:adj2-1,adj3:1+adj3))), kkk:1+kkk)),0) (%o228) atomall() := (block(mode_declare([[kkk, order_d], fixnum, [adj2, adj3, temporary, term, temp, temp2], convfloat]), array_tmp1 : sin(array_x ), array_tmp1_g : cos(array_x ), 1 1 1 1 array_tmp2 : expt(array_const_2D0 , array_tmp1 ), 1 1 1 array_tmp2_c1 : log(array_const_2D0 ), array_tmp3 : cos(array_x ), 1 1 1 1 array_tmp3_g : sin(array_x ), array_tmp4 : array_tmp2 array_tmp3 , 1 1 1 1 1 array_tmp5 : log(array_const_2D0 ), array_tmp6 : array_tmp4 array_tmp5 , 1 1 1 1 1 array_tmp7 : array_tmp6 + array_const_0D0 , 1 1 1 if not array_y_set_initial then (if 1 <= MAX_TERMS 1, 2 then (temporary : array_tmp7 expt(glob_h, 1) factorial_3(0, 1), 1 if 2 <= MAX_TERMS then (array_y : temporary, array_y_higher : temporary), 2 1, 2 temporary 1.0 temporary : -------------, array_y_higher : temporary, 0)), kkk : 2, glob_h 2, 1 array_tmp1_g array_x - array_tmp1 array_x 1 2 1 2 array_tmp1 : ----------------------, array_tmp1_g : ----------------------, 2 1 2 1 array_tmp2 : att(1, array_tmp2, array_tmp1, 1) array_tmp2_c1 , 2 1 - array_tmp3_g array_x array_tmp3 array_x 1 2 1 2 array_tmp3 : ------------------------, array_tmp3_g : --------------------, 2 1 2 1 array_tmp4 : ats(2, array_tmp2, array_tmp3, 1), 2 array_tmp6 : array_tmp4 array_tmp5 , array_tmp7 : array_tmp6 , 2 2 1 2 2 if not array_y_set_initial then (if 2 <= MAX_TERMS 1, 3 then (temporary : array_tmp7 expt(glob_h, 1) factorial_3(1, 2), 2 if 3 <= MAX_TERMS then (array_y : temporary, array_y_higher : temporary), 3 1, 3 temporary 2.0 temporary : -------------, array_y_higher : temporary, 0)), kkk : 3, glob_h 2, 2 array_tmp1_g array_x - array_tmp1 array_x 2 2 2 2 array_tmp1 : ----------------------, array_tmp1_g : ----------------------, 3 2 3 2 array_tmp2 : att(2, array_tmp2, array_tmp1, 1) array_tmp2_c1 , 3 1 - array_tmp3_g array_x array_tmp3 array_x 2 2 2 2 array_tmp3 : ------------------------, array_tmp3_g : --------------------, 3 2 3 2 array_tmp4 : ats(3, array_tmp2, array_tmp3, 1), 3 array_tmp6 : array_tmp4 array_tmp5 , array_tmp7 : array_tmp6 , 3 3 1 3 3 if not array_y_set_initial then (if 3 <= MAX_TERMS 1, 4 then (temporary : array_tmp7 expt(glob_h, 1) factorial_3(2, 3), 3 if 4 <= MAX_TERMS then (array_y : temporary, array_y_higher : temporary), 4 1, 4 temporary 3.0 temporary : -------------, array_y_higher : temporary, 0)), kkk : 4, glob_h 2, 3 array_tmp1_g array_x - array_tmp1 array_x 3 2 3 2 array_tmp1 : ----------------------, array_tmp1_g : ----------------------, 4 3 4 3 array_tmp2 : att(3, array_tmp2, array_tmp1, 1) array_tmp2_c1 , 4 1 - array_tmp3_g array_x array_tmp3 array_x 3 2 3 2 array_tmp3 : ------------------------, array_tmp3_g : --------------------, 4 3 4 3 array_tmp4 : ats(4, array_tmp2, array_tmp3, 1), 4 array_tmp6 : array_tmp4 array_tmp5 , array_tmp7 : array_tmp6 , 4 4 1 4 4 if not array_y_set_initial then (if 4 <= MAX_TERMS 1, 5 then (temporary : array_tmp7 expt(glob_h, 1) factorial_3(3, 4), 4 if 5 <= MAX_TERMS then (array_y : temporary, array_y_higher : temporary), 5 1, 5 temporary 4.0 temporary : -------------, array_y_higher : temporary, 0)), kkk : 5, glob_h 2, 4 array_tmp1_g array_x - array_tmp1 array_x 4 2 4 2 array_tmp1 : ----------------------, array_tmp1_g : ----------------------, 5 4 5 4 array_tmp2 : att(4, array_tmp2, array_tmp1, 1) array_tmp2_c1 , 5 1 - array_tmp3_g array_x array_tmp3 array_x 4 2 4 2 array_tmp3 : ------------------------, array_tmp3_g : --------------------, 5 4 5 4 array_tmp4 : ats(5, array_tmp2, array_tmp3, 1), 5 array_tmp6 : array_tmp4 array_tmp5 , array_tmp7 : array_tmp6 , 5 5 1 5 5 if not array_y_set_initial then (if 5 <= MAX_TERMS 1, 6 then (temporary : array_tmp7 expt(glob_h, 1) factorial_3(4, 5), 5 if 6 <= MAX_TERMS then (array_y : temporary, array_y_higher : temporary), 6 1, 6 temporary 5.0 temporary : -------------, array_y_higher : temporary, 0)), kkk : 6, glob_h 2, 5 array_tmp1_g array_x kkk - 1 2 while kkk <= MAX_TERMS do (array_tmp1 : ----------------------------, kkk kkk - 1 - array_tmp1 array_x kkk - 1 2 array_tmp1_g : ----------------------------, kkk kkk - 1 array_tmp2 : att(kkk - 1, array_tmp2, array_tmp1, 1) array_tmp2_c1 , kkk 1 - array_tmp3_g array_x kkk - 1 2 array_tmp3 : ------------------------------, kkk kkk - 1 array_tmp3 array_x kkk - 1 2 array_tmp3_g : --------------------------, kkk kkk - 1 array_tmp4 : ats(kkk, array_tmp2, array_tmp3, 1), kkk array_tmp6 : array_tmp4 array_tmp5 , array_tmp7 : array_tmp6 , kkk kkk 1 kkk kkk order_d : 1, if order_d + kkk <= MAX_TERMS then (if not array_y_set_initial 1, order_d + kkk then (temporary : array_tmp7 expt(glob_h, order_d) kkk factorial_3(kkk - 1, - 1 + order_d + kkk), array_y : temporary, order_d + kkk array_y_higher : temporary, term : - 1 + order_d + kkk, 1, order_d + kkk adj2 : - 1 + order_d + kkk, adj3 : 2, while (term >= 1) and (term <= MAX_TERMS) and (adj3 < 1 + order_d) do (if adj3 <= 1 + order_d temporary adj2 then (if adj2 > 0 then temporary : -------------- else temporary : temporary, glob_h array_y_higher : temporary), term : term - 1, adj2 : adj2 - 1, adj3, term adj3 : 1 + adj3))), kkk : 1 + kkk)), 0) (%i229) exact_soln_y(x):=block(expt(2.0,sin(x))) (%o229) exact_soln_y(x) := block(expt(2.0, sin(x))) (%i230) main_prog():=block( mode_declare([[d1,d2,d3,d4,est_err_2],convfloat, [niii,done_once,term,ord,order_diff,term_no, html_log_file,iiif,jjjf,rows,r_order, sub_iter,calc_term,iii],fixnum,[temp_sum], convfloat,[current_iter],fixnum, [x_start,x_end],convfloat,[it,opt_iter], fixnum,[tmp],convfloat,[subiter],fixnum, [est_needed_step_err,estimated_step_error, min_value,est_answer,best_h,found_h], convfloat,[repeat_it],fixnum]),Digits:32, max_terms:30,glob_html_log:true,term:1, while term <= MAX_TERMS do (array_y_init[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_norms[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_fact_1[term]:0.0,term:1+term),term:1, while term <= 2 do (array_1st_rel_error[term]:0.0,term:1+term),term:1, while term <= 2 do (array_last_rel_error[term]:0.0,term:1+term),term:1, while term <= 2 do (array_type_pole[term]:0,term:1+term), term:1, while term <= 2 do (array_type_real_pole[term]:0,term:1+term),term:1, while term <= 2 do (array_type_complex_pole[term]:0,term:1+term),term:1, while term <= MAX_TERMS do (array_y[term]:0.0,term:1+term), term:1, while term <= MAX_TERMS do (array_x[term]:0.0,term:1+term), term:1, while term <= MAX_TERMS do (array_tmp0[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp1_g[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp1[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp2_c1[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp2_a1[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp2_a2[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp2[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp3_g[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp3[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp4[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp5[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp6[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_tmp7[term]:0.0,term:1+term),term:1, while term <= MAX_TERMS do (array_m1[term]:0.0,term:1+term), ord:1, while ord <= 2 do (term:1, while term <= MAX_TERMS do (array_y_higher[ord,term]:0.0,term:1+term), ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= MAX_TERMS do (array_y_higher_work[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= MAX_TERMS do (array_y_higher_work2[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= MAX_TERMS do (array_y_set_initial[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= 3 do (array_given_rad_poles[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= 3 do (array_given_ord_poles[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= 3 do (array_rad_test_poles[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= 2 do (term:1, while term <= 3 do (array_ord_test_poles[ord,term]:0.0, term:1+term),ord:1+ord),ord:1, while ord <= MAX_TERMS do (term:1, while term <= MAX_TERMS do (array_fact_2[ord,term]:0.0,term:1+term), ord:1+ord),zero_ats_ar(array_y),zero_ats_ar(array_x), zero_ats_ar(array_tmp0),zero_ats_ar(array_tmp1_g), zero_ats_ar(array_tmp1),zero_ats_ar(array_tmp2_c1), zero_ats_ar(array_tmp2_a1),zero_ats_ar(array_tmp2_a2), zero_ats_ar(array_tmp2),zero_ats_ar(array_tmp3_g), zero_ats_ar(array_tmp3),zero_ats_ar(array_tmp4), zero_ats_ar(array_tmp5),zero_ats_ar(array_tmp6), zero_ats_ar(array_tmp7),zero_ats_ar(array_m1), zero_ats_ar(array_const_1),array_const_1[1]:1, zero_ats_ar(array_const_0D0),array_const_0D0[1]:0.0, zero_ats_ar(array_const_2D0),array_const_2D0[1]:2.0, zero_ats_ar(array_m1),array_m1[1]:-1.0,iiif:0, while iiif <= MAX_TERMS do (jjjf:0, while jjjf <= MAX_TERMS do (array_fact_1[iiif]:0, array_fact_2[iiif,jjjf]:0,jjjf:1+jjjf), iiif:1+iiif),array_y_set_initial[1,1]:true, array_y_set_initial[1,2]:false, array_y_set_initial[1,3]:false, array_y_set_initial[1,4]:false, array_y_set_initial[1,5]:false, array_y_set_initial[1,6]:false, array_y_set_initial[1,7]:false, array_y_set_initial[1,8]:false, array_y_set_initial[1,9]:false, array_y_set_initial[1,10]:false, array_y_set_initial[1,11]:false, array_y_set_initial[1,12]:false, array_y_set_initial[1,13]:false, array_y_set_initial[1,14]:false, array_y_set_initial[1,15]:false, array_y_set_initial[1,16]:false, array_y_set_initial[1,17]:false, array_y_set_initial[1,18]:false, array_y_set_initial[1,19]:false, array_y_set_initial[1,20]:false, array_y_set_initial[1,21]:false, array_y_set_initial[1,22]:false, array_y_set_initial[1,23]:false, array_y_set_initial[1,24]:false, array_y_set_initial[1,25]:false, array_y_set_initial[1,26]:false, array_y_set_initial[1,27]:false, array_y_set_initial[1,28]:false, array_y_set_initial[1,29]:false, array_y_set_initial[1,30]:false,ALWAYS:1,INFO:2,DEBUGL:3, DEBUGMASSIVE:4,MAX_TERMS:30,glob_iolevel:INFO, glob_orig_start_sec:elapsed_time_seconds(), glob_curr_iter_when_opt:0,glob_display_flag:true, glob_no_eqs:1,glob_iter:-1,opt_iter:-1,glob_max_iter:50000, glob_max_hours:0.0,glob_max_minutes:15.0, omniout_str(ALWAYS, "##############ECHO OF PROBLEM#################"), omniout_str(ALWAYS, "##############temp/expt_c_sin_newpostode.ode#################"), omniout_str(ALWAYS, "diff ( y , x , 1 ) = expt ( 2.0 , sin ( x ) ) * cos ( x ) * ln ( 2.0 ) ; "), omniout_str(ALWAYS,"!"), omniout_str(ALWAYS,"/* BEGIN FIRST INPUT BLOCK */"), omniout_str(ALWAYS,""),omniout_str(ALWAYS,"Digits:32,"), omniout_str(ALWAYS,"max_terms:30,"),omniout_str(ALWAYS,""), omniout_str(ALWAYS,"!"), omniout_str(ALWAYS,"/* END FIRST INPUT BLOCK */"), omniout_str(ALWAYS,"/* BEGIN SECOND INPUT BLOCK */"), omniout_str(ALWAYS,""),omniout_str(ALWAYS,"x_start:1.4,"), omniout_str(ALWAYS,"x_end:1.0,"), omniout_str(ALWAYS, "array_y_init[0 + 1] : exact_soln_y(x_start),"), omniout_str(ALWAYS,"glob_look_poles:true,"), omniout_str(ALWAYS,"glob_max_iter:1000000,"), omniout_str(ALWAYS,""), omniout_str(ALWAYS,"glob_max_h:0.0001,"), omniout_str(ALWAYS,"/* END SECOND INPUT BLOCK */"), omniout_str(ALWAYS,"/* BEGIN OVERRIDE BLOCK */"), omniout_str(ALWAYS,"glob_desired_digits_correct:10,"), omniout_str(ALWAYS,"glob_display_interval:0.01,"), omniout_str(ALWAYS,"glob_look_poles:true,"), omniout_str(ALWAYS,"glob_max_iter:1000000000,"), omniout_str(ALWAYS,"glob_max_minutes:10.0,"), omniout_str(ALWAYS,"glob_subiter_method:3,"), omniout_str(ALWAYS,"/* END OVERRIDE BLOCK */"), omniout_str(ALWAYS,"!"), omniout_str(ALWAYS,"/* BEGIN USER DEF BLOCK */"), omniout_str(ALWAYS,""), omniout_str(ALWAYS,"exact_soln_y (x) := (block("), omniout_str(ALWAYS,""), omniout_str(ALWAYS," (expt(2.0,sin(x))) "), omniout_str(ALWAYS,""),omniout_str(ALWAYS,"));"), omniout_str(ALWAYS,"/* END USER DEF BLOCK */"), omniout_str(ALWAYS, "#######END OF ECHO OF PROBLEM#################"), glob_unchanged_h_cnt:0,glob_warned:false,glob_warned2:false, glob_small_float:0.0,glob_smallish_float:0.0, glob_large_float:1.0E+100,glob_larger_float:1.1E+100, glob_almost_1:0.99,x_start:1.4,x_end:1.0, array_y_init[1+0]:exact_soln_y(x_start), glob_look_poles:true,glob_max_iter:1000000, glob_max_h:1.0E-4,glob_desired_digits_correct:10, glob_display_interval:0.01,glob_look_poles:true, glob_max_iter:1000000000,glob_max_minutes:10.0, glob_subiter_method:3,glob_last_good_h:glob_h, glob_max_sec:3600.0*glob_max_hours+60.0*glob_max_minutes, omniout_str(ALWAYS,"START of Optimize"), glob_check_sign:my_check_sign(x_start,x_end),found_h:false, glob_h:glob_min_h*glob_check_sign, if abs(glob_max_h) < abs(glob_h) then glob_h:abs(glob_max_h)*glob_check_sign, if abs(glob_display_interval) < abs(glob_h) then glob_h:abs(glob_display_interval), if glob_h > 0.0 then (glob_neg_h:false, glob_display_interval:abs(glob_display_interval)) else (glob_neg_h:true, glob_display_interval :-abs(glob_display_interval)),chk_data(), best_h:glob_h,min_value:glob_larger_float, est_answer:est_size_answer(),opt_iter:1, est_needed_step_err:estimated_needed_step_error( x_start,x_end,glob_h,est_answer), omniout_float(ALWAYS,"est_needed_step_err",32, est_needed_step_err,16,""), estimated_step_error:0.0, while opt_iter <= 100 and not found_h do (omniout_int(ALWAYS,"opt_iter",32,opt_iter,4,""), array_x[1]:x_start,array_x[2]:glob_h, glob_next_display:x_start,order_diff:1,term_no:1, while term_no <= order_diff do (array_y[term_no] :array_y_init[term_no]*expt(glob_h,term_no-1) /factorial_1(term_no-1),term_no:1+term_no), rows:order_diff,r_order:1, while r_order <= rows do (term_no:1, while term_no <= 1-r_order+rows do (it:-1+r_order+term_no, if term_no < MAX_TERMS then array_y_higher[ r_order,term_no] :array_y_init[it] *expt(glob_h,term_no-1) /factorial_1(term_no-1), term_no:1+term_no),r_order:1+r_order), atomall(),estimated_step_error:test_suggested_h(), omniout_float(ALWAYS,"estimated_step_error",32, estimated_step_error,32,""), if estimated_step_error > est_needed_step_err and opt_iter = 1 or glob_check_sign*glob_h >= glob_check_sign*glob_max_h then (found_h:true, glob_h:glob_check_sign*glob_max_h, best_h:glob_h) elseif estimated_step_error > est_needed_step_err and not found_h then (glob_h:glob_h/2.0,best_h:glob_h, found_h:true) else (glob_h:glob_h*2.0,best_h:glob_h), omniout_float(ALWAYS,"best_h",32,best_h,32,""), opt_iter:1+opt_iter), if not found_h and opt_iter = 1 then (omniout_str(ALWAYS,"Beginning glob_h too large."), found_h:false), if opt_iter > 100 then (glob_h:glob_check_sign*glob_max_h,found_h:false), if glob_check_sign*glob_display_interval < glob_check_sign*glob_h then glob_h:glob_check_sign*glob_display_interval, if glob_html_log then html_log_file:openw("entry.html"), if found_h then (omniout_str(ALWAYS,"START of Soultion"), array_x[1]:x_start,array_x[2]:glob_h, glob_next_display:x_start,order_diff:1,term_no:1, while term_no <= order_diff do (array_y[term_no] :array_y_init[term_no] *expt(glob_h,term_no-1) /factorial_1(term_no-1), term_no:1+term_no),rows:order_diff, r_order:1, while r_order <= rows do (term_no:1, while term_no <= 1-r_order+rows do (it:-1+r_order+term_no, if term_no < MAX_TERMS then array_y_higher[ r_order,term_no] :array_y_init[it] *expt(glob_h,term_no-1) /factorial_1(term_no-1), term_no:1+term_no), r_order:1+r_order),current_iter:1, glob_clock_start_sec:elapsed_time_seconds(), glob_clock_sec:elapsed_time_seconds(), glob_current_iter:0,glob_iter:0, omniout_str(DEBUGL," "), glob_reached_optimal_h:true, glob_optimal_clock_start_sec :elapsed_time_seconds(), while glob_current_iter < glob_max_iter and glob_check_sign*array_x[1] < glob_check_sign*x_end and glob_clock_sec-glob_orig_start_sec < glob_max_sec do (if reached_interval() then (omniout_str(INFO," "), omniout_str(INFO, "TOP MAIN SOLVE Loop")), glob_iter:1+glob_iter, glob_clock_sec:elapsed_time_seconds(), glob_current_iter:1+glob_current_iter, atomall(),display_alot(current_iter), if glob_look_poles then check_for_pole(), if reached_interval() then glob_next_display :glob_display_interval +glob_next_display, array_x[1]:glob_h+array_x[1], array_x[2]:glob_h,order_diff:2,ord:2, calc_term:1,iii:MAX_TERMS, while iii >= calc_term do ( array_y_higher_work[2,iii] :array_y_higher[2,iii] /expt(glob_h,calc_term-1) /factorial_3(iii-calc_term,iii-1), iii:iii-1),temp_sum:0.0,ord:2, calc_term:1,iii:MAX_TERMS, while iii >= calc_term do ( temp_sum :array_y_higher_work[ord,iii] +temp_sum,iii:iii-1), array_y_higher_work2[ord,calc_term] :temp_sum*expt(glob_h,calc_term-1) /factorial_1(calc_term-1),ord:1, calc_term:2,iii:MAX_TERMS, while iii >= calc_term do ( array_y_higher_work[1,iii] :array_y_higher[1,iii] /expt(glob_h,calc_term-1) /factorial_3(iii-calc_term,iii-1), iii:iii-1),temp_sum:0.0,ord:1, calc_term:2,iii:MAX_TERMS, while iii >= calc_term do ( temp_sum :array_y_higher_work[ord,iii] +temp_sum,iii:iii-1), array_y_higher_work2[ord,calc_term] :temp_sum*expt(glob_h,calc_term-1) /factorial_1(calc_term-1),ord:1, calc_term:1,iii:MAX_TERMS, while iii >= calc_term do ( array_y_higher_work[1,iii] :array_y_higher[1,iii] /expt(glob_h,calc_term-1) /factorial_3(iii-calc_term,iii-1), iii:iii-1),temp_sum:0.0,ord:1, calc_term:1,iii:MAX_TERMS, while iii >= calc_term do ( temp_sum :array_y_higher_work[ord,iii] +temp_sum,iii:iii-1), array_y_higher_work2[ord,calc_term] :temp_sum*expt(glob_h,calc_term-1) /factorial_1(calc_term-1), term_no:MAX_TERMS, while term_no >= 1 do ( array_y[term_no] :array_y_higher_work2[1,term_no], ord:1, while ord <= order_diff do ( array_y_higher[ord,term_no] :array_y_higher_work2[ ord,term_no],ord:1+ord), term_no:term_no-1)), omniout_str(ALWAYS,"Finished!"), if glob_iter >= glob_max_iter then omniout_str(ALWAYS, "Maximum Iterations Reached before Solution Completed!"), if elapsed_time_seconds()-glob_orig_start_sec >= glob_max_sec then omniout_str(ALWAYS, "Maximum Time Reached before Solution Completed!"), glob_clock_sec:elapsed_time_seconds(), omniout_str(INFO, "diff ( y , x , 1 ) = expt ( 2.0 , sin ( x ) ) * cos ( x ) * ln ( 2.0 ) ; "), omniout_int(INFO, "Iterations ",32, glob_iter,4," "), prog_report(x_start,x_end), if glob_html_log then (logstart(html_log_file), logitem_str(html_log_file, "2014-01-08T20:50:01-06:00"), logitem_str(html_log_file,"Maxima"), logitem_str(html_log_file, "expt_c_sin_new"), logitem_str(html_log_file, "diff ( y , x , 1 ) = expt ( 2.0 , sin ( x ) ) * cos ( x ) * ln ( 2.0 ) ; "), logitem_float(html_log_file,x_start), logitem_float(html_log_file,x_end), logitem_float(html_log_file,array_x[1]), logitem_float(html_log_file,glob_h), logitem_str(html_log_file,"16"), logitem_good_digits(html_log_file, array_last_rel_error[ 1]), logitem_integer(html_log_file, MAX_TERMS), if glob_least_given_sing < glob_large_float then ( logitem_float(html_log_file, glob_least_given_sing), 0) else ( logitem_str(html_log_file, "NOT GIVEN"),0), if glob_least_ratio_sing < glob_large_float then ( logitem_float(html_log_file, glob_least_ratio_sing), 0) else ( logitem_str(html_log_file,"NONE"),0), if glob_least_3_sing < glob_large_float then ( logitem_float(html_log_file, glob_least_3_sing),0) else ( logitem_str(html_log_file,"NONE"), 0), if glob_least_6_sing < glob_large_float then ( logitem_float(html_log_file, glob_least_6_sing),0) else ( logitem_str(html_log_file,"NONE"), 0), logitem_integer(html_log_file, glob_iter), logitem_time(html_log_file, glob_clock_sec), if glob_percent_done < 100.0 then ( logitem_time(html_log_file, glob_total_exp_sec),0) else ( logitem_str(html_log_file,"Done"), 0), log_revs(html_log_file, " 225 "), logitem_str(html_log_file, "expt_c_sin_new diffeq.max"), logitem_str(html_log_file, "expt_c_sin_new maxima results"), logitem_str(html_log_file, "All Tests - Maxima only - to save time"), logend(html_log_file)), if glob_html_log then close(html_log_file))) (%o230) main_prog() := block(mode_declare([[d1, d2, d3, d4, est_err_2], convfloat, [niii, done_once, term, ord, order_diff, term_no, html_log_file, iiif, jjjf, rows, r_order, sub_iter, calc_term, iii], fixnum, [temp_sum], convfloat, [current_iter], fixnum, [x_start, x_end], convfloat, [it, opt_iter], fixnum, [tmp], convfloat, [subiter], fixnum, [est_needed_step_err, estimated_step_error, min_value, est_answer, best_h, found_h], convfloat, [repeat_it], fixnum]), Digits : 32, max_terms : 30, glob_html_log : true, term : 1, while term <= MAX_TERMS do (array_y_init : 0.0, term : 1 + term), term : 1, term while term <= MAX_TERMS do (array_norms : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_fact_1 : 0.0, term term : 1 + term), term : 1, while term <= 2 do (array_1st_rel_error : 0.0, term : 1 + term), term : 1, term while term <= 2 do (array_last_rel_error : 0.0, term : 1 + term), term term : 1, while term <= 2 do (array_type_pole : 0, term : 1 + term), term term : 1, while term <= 2 do (array_type_real_pole : 0, term : 1 + term), term term : 1, while term <= 2 do (array_type_complex_pole : 0, term term : 1 + term), term : 1, while term <= MAX_TERMS do (array_y : 0.0, term term : 1 + term), term : 1, while term <= MAX_TERMS do (array_x : 0.0, term term : 1 + term), term : 1, while term <= MAX_TERMS do (array_tmp0 : 0.0, term term : 1 + term), term : 1, while term <= MAX_TERMS do (array_tmp1_g : 0.0, term : 1 + term), term : 1, term while term <= MAX_TERMS do (array_tmp1 : 0.0, term : 1 + term), term : 1, term while term <= MAX_TERMS do (array_tmp2_c1 : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_tmp2_a1 : 0.0, term term : 1 + term), term : 1, while term <= MAX_TERMS do (array_tmp2_a2 : 0.0, term : 1 + term), term : 1, term while term <= MAX_TERMS do (array_tmp2 : 0.0, term : 1 + term), term : 1, term while term <= MAX_TERMS do (array_tmp3_g : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_tmp3 : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_tmp4 : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_tmp5 : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_tmp6 : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_tmp7 : 0.0, term : 1 + term), term term : 1, while term <= MAX_TERMS do (array_m1 : 0.0, term : 1 + term), term ord : 1, while ord <= 2 do (term : 1, while term <= MAX_TERMS do (array_y_higher : 0.0, term : 1 + term), ord, term ord : 1 + ord), ord : 1, while ord <= 2 do (term : 1, while term <= MAX_TERMS do (array_y_higher_work : 0.0, ord, term term : 1 + term), ord : 1 + ord), ord : 1, while ord <= 2 do (term : 1, while term <= MAX_TERMS do (array_y_higher_work2 : 0.0, term : 1 + term), ord, term ord : 1 + ord), ord : 1, while ord <= 2 do (term : 1, while term <= MAX_TERMS do (array_y_set_initial : 0.0, ord, term term : 1 + term), ord : 1 + ord), ord : 1, while ord <= 2 do (term : 1, while term <= 3 do (array_given_rad_poles : 0.0, term : 1 + term), ord : 1 + ord), ord, term ord : 1, while ord <= 2 do (term : 1, while term <= 3 do (array_given_ord_poles : 0.0, term : 1 + term), ord, term ord : 1 + ord), ord : 1, while ord <= 2 do (term : 1, while term <= 3 do (array_rad_test_poles : 0.0, term : 1 + term), ord, term ord : 1 + ord), ord : 1, while ord <= 2 do (term : 1, while term <= 3 do (array_ord_test_poles : 0.0, term : 1 + term), ord, term ord : 1 + ord), ord : 1, while ord <= MAX_TERMS do (term : 1, while term <= MAX_TERMS do (array_fact_2 : 0.0, term : 1 + term), ord, term ord : 1 + ord), zero_ats_ar(array_y), zero_ats_ar(array_x), zero_ats_ar(array_tmp0), zero_ats_ar(array_tmp1_g), zero_ats_ar(array_tmp1), zero_ats_ar(array_tmp2_c1), zero_ats_ar(array_tmp2_a1), zero_ats_ar(array_tmp2_a2), zero_ats_ar(array_tmp2), zero_ats_ar(array_tmp3_g), zero_ats_ar(array_tmp3), zero_ats_ar(array_tmp4), zero_ats_ar(array_tmp5), zero_ats_ar(array_tmp6), zero_ats_ar(array_tmp7), zero_ats_ar(array_m1), zero_ats_ar(array_const_1), array_const_1 : 1, 1 zero_ats_ar(array_const_0D0), array_const_0D0 : 0.0, 1 zero_ats_ar(array_const_2D0), array_const_2D0 : 2.0, zero_ats_ar(array_m1), 1 array_m1 : - 1.0, iiif : 0, while iiif <= MAX_TERMS do (jjjf : 0, 1 while jjjf <= MAX_TERMS do (array_fact_1 : 0, array_fact_2 : 0, iiif iiif, jjjf jjjf : 1 + jjjf), iiif : 1 + iiif), array_y_set_initial : true, 1, 1 array_y_set_initial : false, array_y_set_initial : false, 1, 2 1, 3 array_y_set_initial : false, array_y_set_initial : false, 1, 4 1, 5 array_y_set_initial : false, array_y_set_initial : false, 1, 6 1, 7 array_y_set_initial : false, array_y_set_initial : false, 1, 8 1, 9 array_y_set_initial : false, array_y_set_initial : false, 1, 10 1, 11 array_y_set_initial : false, array_y_set_initial : false, 1, 12 1, 13 array_y_set_initial : false, array_y_set_initial : false, 1, 14 1, 15 array_y_set_initial : false, array_y_set_initial : false, 1, 16 1, 17 array_y_set_initial : false, array_y_set_initial : false, 1, 18 1, 19 array_y_set_initial : false, array_y_set_initial : false, 1, 20 1, 21 array_y_set_initial : false, array_y_set_initial : false, 1, 22 1, 23 array_y_set_initial : false, array_y_set_initial : false, 1, 24 1, 25 array_y_set_initial : false, array_y_set_initial : false, 1, 26 1, 27 array_y_set_initial : false, array_y_set_initial : false, 1, 28 1, 29 array_y_set_initial : false, ALWAYS : 1, INFO : 2, DEBUGL : 3, 1, 30 DEBUGMASSIVE : 4, MAX_TERMS : 30, glob_iolevel : INFO, glob_orig_start_sec : elapsed_time_seconds(), glob_curr_iter_when_opt : 0, glob_display_flag : true, glob_no_eqs : 1, glob_iter : - 1, opt_iter : - 1, glob_max_iter : 50000, glob_max_hours : 0.0, glob_max_minutes : 15.0, omniout_str(ALWAYS, "##############ECHO OF PROBLEM#################"), omniout_str(ALWAYS, "##############temp/expt_c_sin_newpostode.ode#################"), omniout_str(ALWAYS, "diff ( y , x , 1 ) = expt ( 2.0 , sin ( x\ ) ) * cos ( x ) * ln ( 2.0 ) ; "), omniout_str(ALWAYS, "!"), omniout_str(ALWAYS, "/* BEGIN FIRST INPUT BLOCK */"), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, "Digits:32,"), omniout_str(ALWAYS, "max_terms:30,"), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, "!"), omniout_str(ALWAYS, "/* END FIRST INPUT BLOCK */"), omniout_str(ALWAYS, "/* BEGIN SECOND INPUT BLOCK */"), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, "x_start:1.4,"), omniout_str(ALWAYS, "x_end:1.0,"), omniout_str(ALWAYS, "array_y_init[0 + 1] : exact_soln_y(x_start),"), omniout_str(ALWAYS, "glob_look_poles:true,"), omniout_str(ALWAYS, "glob_max_iter:1000000,"), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, "glob_max_h:0.0001,"), omniout_str(ALWAYS, "/* END SECOND INPUT BLOCK */"), omniout_str(ALWAYS, "/* BEGIN OVERRIDE BLOCK */"), omniout_str(ALWAYS, "glob_desired_digits_correct:10,"), omniout_str(ALWAYS, "glob_display_interval:0.01,"), omniout_str(ALWAYS, "glob_look_poles:true,"), omniout_str(ALWAYS, "glob_max_iter:1000000000,"), omniout_str(ALWAYS, "glob_max_minutes:10.0,"), omniout_str(ALWAYS, "glob_subiter_method:3,"), omniout_str(ALWAYS, "/* END OVERRIDE BLOCK */"), omniout_str(ALWAYS, "!"), omniout_str(ALWAYS, "/* BEGIN USER DEF BLOCK */"), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, "exact_soln_y (x) := (block("), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, " (expt(2.0,sin(x))) "), omniout_str(ALWAYS, ""), omniout_str(ALWAYS, "));"), omniout_str(ALWAYS, "/* END USER DEF BLOCK */"), omniout_str(ALWAYS, "#######END OF ECHO OF PROBLEM#################"), glob_unchanged_h_cnt : 0, glob_warned : false, glob_warned2 : false, glob_small_float : 0.0, glob_smallish_float : 0.0, glob_large_float : 1.0E+100, glob_larger_float : 1.1E+100, glob_almost_1 : 0.99, x_start : 1.4, x_end : 1.0, array_y_init : exact_soln_y(x_start), glob_look_poles : true, 1 + 0 glob_max_iter : 1000000, glob_max_h : 1.0E-4, glob_desired_digits_correct : 10, glob_display_interval : 0.01, glob_look_poles : true, glob_max_iter : 1000000000, glob_max_minutes : 10.0, glob_subiter_method : 3, glob_last_good_h : glob_h, glob_max_sec : 3600.0 glob_max_hours + 60.0 glob_max_minutes, omniout_str(ALWAYS, "START of Optimize"), glob_check_sign : my_check_sign(x_start, x_end), found_h : false, glob_h : glob_min_h glob_check_sign, if mabs(glob_max_h) < mabs(glob_h) then glob_h : mabs(glob_max_h) glob_check_sign, if mabs(glob_display_interval) < mabs(glob_h) then glob_h : mabs(glob_display_interval), if glob_h > 0.0 then (glob_neg_h : false, glob_display_interval : mabs(glob_display_interval)) else (glob_neg_h : true, glob_display_interval : - mabs(glob_display_interval)), chk_data(), best_h : glob_h, min_value : glob_larger_float, est_answer : est_size_answer(), opt_iter : 1, est_needed_step_err : estimated_needed_step_error(x_start, x_end, glob_h, est_answer), omniout_float(ALWAYS, "est_needed_step_err", 32, est_needed_step_err, 16, ""), estimated_step_error : 0.0, while (opt_iter <= 100) and (not found_h) do (omniout_int(ALWAYS, "opt_iter", 32, opt_iter, 4, ""), array_x : x_start, array_x : glob_h, 1 2 glob_next_display : x_start, order_diff : 1, term_no : 1, while term_no <= order_diff do (array_y : term_no array_y_init expt(glob_h, term_no - 1) term_no ---------------------------------------------, term_no : 1 + term_no), factorial_1(term_no - 1) rows : order_diff, r_order : 1, while r_order <= rows do (term_no : 1, while term_no <= 1 - r_order + rows do (it : - 1 + r_order + term_no, if term_no < MAX_TERMS then array_y_higher : r_order, term_no array_y_init expt(glob_h, term_no - 1) it ----------------------------------------, term_no : 1 + term_no), factorial_1(term_no - 1) r_order : 1 + r_order), atomall(), estimated_step_error : test_suggested_h(), omniout_float(ALWAYS, "estimated_step_error", 32, estimated_step_error, 32, ""), if ((estimated_step_error > est_needed_step_err) and (opt_iter = 1)) or (glob_check_sign glob_h >= glob_check_sign glob_max_h) then (found_h : true, glob_h : glob_check_sign glob_max_h, best_h : glob_h) elseif (estimated_step_error > est_needed_step_err) and (not found_h) glob_h then (glob_h : ------, best_h : glob_h, found_h : true) 2.0 else (glob_h : glob_h 2.0, best_h : glob_h), omniout_float(ALWAYS, "best_h", 32, best_h, 32, ""), opt_iter : 1 + opt_iter), if (not found_h) and (opt_iter = 1) then (omniout_str(ALWAYS, "Beginning glob_h too large."), found_h : false), if opt_iter > 100 then (glob_h : glob_check_sign glob_max_h, found_h : false), if glob_check_sign glob_display_interval < glob_check_sign glob_h then glob_h : glob_check_sign glob_display_interval, if glob_html_log then html_log_file : openw("entry.html"), if found_h then (omniout_str(ALWAYS, "START of Soultion"), array_x : x_start, 1 array_x : glob_h, glob_next_display : x_start, order_diff : 1, term_no : 1, 2 while term_no <= order_diff do (array_y : term_no array_y_init expt(glob_h, term_no - 1) term_no ---------------------------------------------, term_no : 1 + term_no), factorial_1(term_no - 1) rows : order_diff, r_order : 1, while r_order <= rows do (term_no : 1, while term_no <= 1 - r_order + rows do (it : - 1 + r_order + term_no, if term_no < MAX_TERMS then array_y_higher : r_order, term_no array_y_init expt(glob_h, term_no - 1) it ----------------------------------------, term_no : 1 + term_no), factorial_1(term_no - 1) r_order : 1 + r_order), current_iter : 1, glob_clock_start_sec : elapsed_time_seconds(), glob_clock_sec : elapsed_time_seconds(), glob_current_iter : 0, glob_iter : 0, omniout_str(DEBUGL, " "), glob_reached_optimal_h : true, glob_optimal_clock_start_sec : elapsed_time_seconds(), while (glob_current_iter < glob_max_iter) and (glob_check_sign array_x < glob_check_sign x_end) 1 and (glob_clock_sec - glob_orig_start_sec < glob_max_sec) do (if reached_interval () then (omniout_str(INFO, " "), omniout_str(INFO, "TOP MAIN SOLVE Loop")), glob_iter : 1 + glob_iter, glob_clock_sec : elapsed_time_seconds(), glob_current_iter : 1 + glob_current_iter, atomall(), display_alot(current_iter), if glob_look_poles then check_for_pole(), if reached_interval() then glob_next_display : glob_display_interval + glob_next_display, array_x : glob_h + array_x , 1 1 array_x : glob_h, order_diff : 2, ord : 2, calc_term : 1, iii : MAX_TERMS, 2 while iii >= calc_term do (array_y_higher_work : 2, iii array_y_higher 2, iii --------------------------- expt(glob_h, calc_term - 1) -------------------------------------, iii : iii - 1), temp_sum : 0.0, factorial_3(iii - calc_term, iii - 1) ord : 2, calc_term : 1, iii : MAX_TERMS, while iii >= calc_term do (temp_sum : array_y_higher_work + temp_sum, ord, iii iii : iii - 1), array_y_higher_work2 : ord, calc_term temp_sum expt(glob_h, calc_term - 1) ------------------------------------, ord : 1, calc_term : 2, iii : MAX_TERMS, factorial_1(calc_term - 1) while iii >= calc_term do (array_y_higher_work : 1, iii array_y_higher 1, iii --------------------------- expt(glob_h, calc_term - 1) -------------------------------------, iii : iii - 1), temp_sum : 0.0, factorial_3(iii - calc_term, iii - 1) ord : 1, calc_term : 2, iii : MAX_TERMS, while iii >= calc_term do (temp_sum : array_y_higher_work + temp_sum, ord, iii iii : iii - 1), array_y_higher_work2 : ord, calc_term temp_sum expt(glob_h, calc_term - 1) ------------------------------------, ord : 1, calc_term : 1, iii : MAX_TERMS, factorial_1(calc_term - 1) while iii >= calc_term do (array_y_higher_work : 1, iii array_y_higher 1, iii --------------------------- expt(glob_h, calc_term - 1) -------------------------------------, iii : iii - 1), temp_sum : 0.0, factorial_3(iii - calc_term, iii - 1) ord : 1, calc_term : 1, iii : MAX_TERMS, while iii >= calc_term do (temp_sum : array_y_higher_work + temp_sum, ord, iii iii : iii - 1), array_y_higher_work2 : ord, calc_term temp_sum expt(glob_h, calc_term - 1) ------------------------------------, term_no : MAX_TERMS, factorial_1(calc_term - 1) while term_no >= 1 do (array_y : array_y_higher_work2 , term_no 1, term_no ord : 1, while ord <= order_diff do (array_y_higher : ord, term_no array_y_higher_work2 , ord : 1 + ord), term_no : term_no - 1)), ord, term_no omniout_str(ALWAYS, "Finished!"), if glob_iter >= glob_max_iter then omniout_str(ALWAYS, "Maximum Iterations Reached before Solution Completed!"), if elapsed_time_seconds() - glob_orig_start_sec >= glob_max_sec then omniout_str(ALWAYS, "Maximum Time Reached before Solution Completed!"), glob_clock_sec : elapsed_time_seconds(), omniout_str(INFO, "diff ( y , x \ , 1 ) = expt ( 2.0 , sin ( x ) ) * cos ( x ) * ln ( 2\ .0 ) ; "), omniout_int(INFO, "Iterations ", 32, glob_iter, 4, " "), prog_report(x_start, x_end), if glob_html_log then (logstart(html_log_file), logitem_str(html_log_file, "2014-01-08T20:50:01-06:00"), logitem_str(html_log_file, "Maxima"), logitem_str(html_log_file, "expt_c_sin_new"), logitem_str(html_log_file, "diff ( y , x , 1 ) = expt ( 2.0 , si\ n ( x ) ) * cos ( x ) * ln ( 2.0 ) ; "), logitem_float(html_log_file, x_start), logitem_float(html_log_file, x_end), logitem_float(html_log_file, array_x ), logitem_float(html_log_file, glob_h), 1 logitem_str(html_log_file, "16"), logitem_good_digits(html_log_file, array_last_rel_error ), logitem_integer(html_log_file, MAX_TERMS), 1 if glob_least_given_sing < glob_large_float then (logitem_float(html_log_file, glob_least_given_sing), 0) else (logitem_str(html_log_file, "NOT GIVEN"), 0), if glob_least_ratio_sing < glob_large_float then (logitem_float(html_log_file, glob_least_ratio_sing), 0) else (logitem_str(html_log_file, "NONE"), 0), if glob_least_3_sing < glob_large_float then (logitem_float(html_log_file, glob_least_3_sing), 0) else (logitem_str(html_log_file, "NONE"), 0), if glob_least_6_sing < glob_large_float then (logitem_float(html_log_file, glob_least_6_sing), 0) else (logitem_str(html_log_file, "NONE"), 0), logitem_integer(html_log_file, glob_iter), logitem_time(html_log_file, glob_clock_sec), if glob_percent_done < 100.0 then (logitem_time(html_log_file, glob_total_exp_sec), 0) else (logitem_str(html_log_file, "Done"), 0), log_revs(html_log_file, " 225 "), logitem_str(html_log_file, "expt_c_sin_new diffeq.max"), logitem_str(html_log_file, "expt_c_sin_new maxima results"), logitem_str(html_log_file, "All Tests - Maxima only - to save time"), logend(html_log_file)), if glob_html_log then close(html_log_file))) (%i231) main():=(alias(convfloat,convfloat),compile(all),main_prog()) (%o231) main() := (alias(convfloat, convfloat), compile(all), main_prog()) (%i232) main() warning: encountered undefined variable glob_iolevel in translation. warning: encountered undefined variable glob_iolevel in translation. warning: encountered undefined variable glob_iolevel in translation. warning: encountered undefined variable glob_iolevel in translation. warning: encountered undefined variable glob_iolevel in translation. warning: encountered undefined variable glob_iolevel in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable secs in translation. warning: encountered undefined variable glob_sec_in_year in translation. warning: encountered undefined variable sec_temp in translation. warning: encountered undefined variable glob_sec_in_day in translation. warning: encountered undefined variable glob_sec_in_hour in translation. warning: encountered undefined variable glob_sec_in_minute in translation. warning: encountered undefined variable years_int in translation. warning: encountered undefined variable days_int in translation. warning: encountered undefined variable hours_int in translation. warning: encountered undefined variable minutes_int in translation. warning: encountered undefined variable sec_int in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable glob_sec_in_year in translation. warning: encountered undefined variable glob_sec_in_day in translation. warning: encountered undefined variable glob_sec_in_hour in translation. warning: encountered undefined variable glob_sec_in_minute in translation. warning: encountered undefined variable iii in translation. warning: encountered undefined variable fixnum in translation. warning: encountered undefined variable MAX_TERMS in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable iii_ats in translation. warning: encountered undefined variable ma_ats in translation. warning: encountered undefined variable ret_ats in translation. warning: encountered undefined variable lll_ats in translation. warning: encountered undefined variable MAX_TERMS in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable iii_att in translation. warning: encountered undefined variable MAX_TERMS in translation. warning: encountered undefined variable ma_att in translation. warning: encountered undefined variable lll_att in translation. warning: encountered undefined variable ret_att in translation. warning: encountered undefined variable al_att in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable good_digits in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable ALWAYS in translation. warning: encountered undefined variable glob_max_iter in translation. warning: encountered undefined variable errflag in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable sub1 in translation. warning: encountered undefined variable sub2 in translation. warning: encountered undefined variable rrr in translation. warning: encountered undefined variable ms2 in translation. warning: encountered undefined variable sec_left in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable glob_small_float in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable glob_larger_float in translation. warning: encountered undefined variable ret in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable glob_larger_float in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable temp in translation. warning: encountered undefined variable glob_larger_float in translation. warning: encountered undefined variable rm0 in translation. warning: encountered undefined variable rm1 in translation. warning: encountered undefined variable rm2 in translation. warning: encountered undefined variable rm3 in translation. warning: encountered undefined variable rm4 in translation. warning: encountered undefined variable glob_larger_float in translation. warning: encountered undefined variable nr1 in translation. warning: encountered undefined variable dr2 in translation. warning: encountered undefined variable nr2 in translation. warning: encountered undefined variable dr1 in translation. warning: encountered undefined variable ds1 in translation. warning: encountered undefined variable ds2 in translation. warning: encountered undefined variable rcs in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable ord_no in translation. warning: variable glob_six_term_ord_save (declared type convfloat) assigned type any. warning: encountered undefined variable rad_c in translation. warning: encountered undefined variable glob_six_term_ord_save in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable array_fact_1 in translation. warning: encountered undefined variable MAX_TERMS in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable array_fact_2 in translation. warning: encountered undefined variable MAX_TERMS in translation. warning: encountered undefined variable glob_log_10 in translation. warning: encountered undefined variable ALWAYS in translation. warning: encountered undefined variable glob_desired_digits_correct in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable array_x in translation. warning: encountered undefined variable array_given_rad_poles in translation. warning: encountered undefined variable rad_given in translation. warning: variable glob_least_given_sing (declared type convfloat) assigned type any. warning: encountered undefined variable glob_least_given_sing in translation. warning: encountered undefined variable ALWAYS in translation. warning: encountered undefined variable array_given_ord_poles in translation. warning: encountered undefined variable glob_type_given_pole in translation. warning: encountered undefined variable array_rad_test_poles in translation. warning: variable glob_least_ratio_sing (declared type convfloat) assigned type any. warning: encountered undefined variable glob_least_ratio_sing in translation. warning: encountered undefined variable array_ord_test_poles in translation. warning: encountered undefined variable glob_large_float in translation. warning: variable glob_least_3_sing (declared type convfloat) assigned type any. warning: encountered undefined variable glob_least_3_sing in translation. warning: variable glob_least_6_sing (declared type convfloat) assigned type any. warning: encountered undefined variable glob_least_6_sing in translation. warning: encountered undefined variable glob_estimated_size_answer in translation. warning: encountered undefined variable array_y in translation. warning: encountered undefined variable ALWAYS in translation. warning: encountered undefined variable MAX_TERMS in translation. warning: encountered undefined variable ALWAYS in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable glob_check_sign in translation. warning: encountered undefined variable glob_next_display in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable ALWAYS in translation. warning: encountered undefined variable ind_var in translation. warning: encountered undefined variable analytic_val_y in translation. warning: encountered undefined variable term_no in translation. warning: encountered undefined variable numeric_val in translation. warning: encountered undefined variable abserr in translation. warning: encountered undefined variable relerr in translation. warning: variable glob_good_digits (declared type fixnum) assigned type any. warning: encountered undefined variable array_1st_rel_error in translation. warning: encountered undefined variable glob_iter in translation. warning: encountered undefined variable array_last_rel_error in translation. warning: encountered undefined variable INFO in translation. warning: encountered undefined variable glob_good_digits in translation. warning: encountered undefined variable glob_h in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable glob_small_float in translation. warning: encountered undefined variable array_y_higher in translation. warning: encountered undefined variable tmp in translation. warning: variable glob_normmax (declared type convfloat) assigned type any. warning: encountered undefined variable glob_normmax in translation. warning: encountered undefined variable glob_min_pole_est in translation. warning: encountered undefined variable INFO in translation. warning: encountered undefined variable hnew in translation. warning: encountered undefined variable sz2 in translation. warning: encountered undefined variable glob_look_poles in translation. warning: encountered undefined variable glob_large_float in translation. warning: encountered undefined variable glob_current_iter in translation. warning: variable glob_optimal_clock_start_sec (declared type convfloat) assigned type any. warning: variable glob_optimal_start (declared type convfloat) assigned type any. warning: encountered undefined variable glob_reached_optimal_h in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable clock_sec1 in translation. warning: encountered undefined variable glob_orig_start_sec in translation. warning: encountered undefined variable glob_clock_start_sec in translation. warning: variable glob_clock_sec (declared type convfloat) assigned type any. warning: encountered undefined variable glob_max_sec in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable glob_optimal_clock_start_sec in translation. warning: encountered undefined variable opt_clock_sec in translation. warning: variable glob_optimal_expect_sec (declared type convfloat) assigned type any. warning: encountered undefined variable glob_optimal_expect_sec in translation. warning: encountered undefined variable total_clock_sec in translation. warning: variable glob_total_exp_sec (declared type convfloat) assigned type any. warning: encountered undefined variable percent_done in translation. warning: variable glob_percent_done (declared type convfloat) assigned type any. warning: encountered undefined variable INFO in translation. warning: encountered undefined variable glob_clock_sec in translation. warning: encountered undefined variable expect_sec in translation. warning: encountered undefined variable glob_total_exp_sec in translation. warning: encountered undefined variable left_sec in translation. warning: encountered undefined variable glob_larger_float in translation. warning: encountered undefined variable MAX_TERMS in translation. warning: encountered undefined variable last_no in translation. warning: encountered undefined variable found_sing in translation. warning: variable tmp_rad (declared type convfloat) assigned type any. warning: encountered undefined variable tmp_rad in translation. warning: encountered undefined variable prev_tmp_rad in translation. warning: encountered undefined variable cnt in translation. warning: encountered undefined variable tmp_ratio in translation. warning: encountered undefined variable glob_upper_ratio_limit in translation. warning: encountered undefined variable glob_lower_ratio_limit in translation. warning: variable tmp_ord (declared type convfloat) assigned type any. warning: encountered undefined variable tmp_ord in translation. warning: encountered undefined variable glob_min_pole_est in translation. warning: encountered undefined variable glob_check_sign in translation. warning: encountered undefined variable glob_ratio_of_radius in translation. warning: encountered undefined variable term in translation. warning: encountered undefined variable ratio in translation. warning: encountered undefined variable h_new in translation. warning: encountered undefined variable glob_h in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable array_tmp1 in translation. warning: encountered undefined variable array_tmp1_g in translation. warning: encountered undefined variable array_const_2D0 in translation. warning: encountered undefined variable array_tmp2 in translation. warning: encountered undefined variable array_tmp2_c1 in translation. warning: encountered undefined variable array_tmp3 in translation. warning: encountered undefined variable array_tmp3_g in translation. warning: encountered undefined variable array_tmp4 in translation. warning: encountered undefined variable array_tmp5 in translation. warning: encountered undefined variable array_tmp6 in translation. warning: encountered undefined variable array_const_0D0 in translation. warning: encountered undefined variable array_tmp7 in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable temporary in translation. warning: encountered undefined variable MAX_TERMS in translation. warning: encountered undefined variable array_y_set_initial in translation. warning: encountered undefined variable kkk in translation. warning: encountered undefined variable order_d in translation. warning: encountered undefined variable adj3 in translation. warning: encountered undefined variable adj2 in translation. modedeclare: false is not a built-in type; assuming it is a Maxima extension type. warning: encountered undefined variable MAX_TERMS in translation. warning: encountered undefined variable array_y_init in translation. warning: encountered undefined variable array_norms in translation. warning: encountered undefined variable array_type_pole in translation. warning: encountered undefined variable array_type_real_pole in translation. warning: encountered undefined variable array_type_complex_pole in translation. warning: encountered undefined variable array_tmp0 in translation. warning: encountered undefined variable array_tmp2_a1 in translation. warning: encountered undefined variable array_tmp2_a2 in translation. warning: encountered undefined variable array_m1 in translation. warning: encountered undefined variable ord in translation. warning: encountered undefined variable array_y_higher_work in translation. warning: encountered undefined variable array_y_higher_work2 in translation. warning: encountered undefined variable array_const_1 in translation. warning: encountered undefined variable iiif in translation. warning: encountered undefined variable jjjf in translation. warning: encountered undefined variable INFO in translation. warning: variable glob_orig_start_sec (declared type convfloat) assigned type any. warning: encountered undefined variable ALWAYS in translation. warning: encountered undefined variable x_start in translation. warning: encountered undefined variable glob_h in translation. warning: encountered undefined variable glob_max_minutes in translation. warning: encountered undefined variable glob_max_hours in translation. warning: encountered undefined variable x_end in translation. warning: variable glob_check_sign (declared type convfloat) assigned type any. warning: encountered undefined variable glob_min_h in translation. warning: encountered undefined variable glob_check_sign in translation. warning: encountered undefined variable glob_max_h in translation. warning: encountered undefined variable glob_display_interval in translation. warning: encountered undefined variable glob_larger_float in translation. warning: encountered undefined variable est_answer in translation. warning: encountered undefined variable est_needed_step_err in translation. warning: encountered undefined variable opt_iter in translation. warning: encountered undefined variable found_h in translation. warning: variable glob_next_display (declared type convfloat) assigned type any. warning: encountered undefined variable order_diff in translation. warning: encountered undefined variable r_order in translation. warning: encountered undefined variable rows in translation. warning: encountered undefined variable it in translation. warning: encountered undefined variable estimated_step_error in translation. warning: encountered undefined variable best_h in translation. warning: encountered undefined variable glob_html_log in translation. warning: variable glob_clock_start_sec (declared type convfloat) assigned type any. warning: variable glob_clock_sec (declared type convfloat) assigned type any. warning: encountered undefined variable DEBUGL in translation. warning: variable glob_optimal_clock_start_sec (declared type convfloat) assigned type any. warning: encountered undefined variable glob_current_iter in translation. warning: encountered undefined variable glob_max_iter in translation. warning: encountered undefined variable glob_clock_sec in translation. warning: encountered undefined variable glob_orig_start_sec in translation. warning: encountered undefined variable glob_max_sec in translation. warning: encountered undefined variable glob_iter in translation. warning: encountered undefined variable current_iter in translation. warning: encountered undefined variable glob_look_poles in translation. warning: encountered undefined variable glob_next_display in translation. warning: encountered undefined variable calc_term in translation. warning: encountered undefined variable temp_sum in translation. warning: encountered undefined variable html_log_file in translation. warning: encountered undefined variable glob_least_given_sing in translation. warning: encountered undefined variable glob_large_float in translation. warning: encountered undefined variable glob_least_ratio_sing in translation. warning: encountered undefined variable glob_least_3_sing in translation. warning: encountered undefined variable glob_least_6_sing in translation. warning: encountered undefined variable glob_total_exp_sec in translation. warning: encountered undefined variable glob_percent_done in translation. WARNING: in $ADJUST_FOR_POLE : $GLOB_CURR_ITER_WHEN_OPT is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $ADJUST_FOR_POLE : $GLOB_OPTIMAL_START is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : |$Digits| is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $MAX_TERMS is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : |$debugmassive| is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_CURR_ITER_WHEN_OPT is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_DISPLAY_FLAG is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_NO_EQS is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_UNCHANGED_H_CNT is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_WARNED is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_WARNED2 is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_SMALLISH_FLOAT is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_ALMOST_1 is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_SUBITER_METHOD is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_LAST_GOOD_H is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_NEG_H is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $GLOB_NEG_H is neither declared nor bound, it will be treated as if it were declared SPECIAL. WARNING: in $MAIN_PROG : $MIN_VALUE is neither declared nor bound, it will be treated as if it were declared SPECIAL. Warning: modedcclare has a function or macro call which has not been translated properly. The function was totaly undefined. Maybe you want to quote it."##############ECHO OF PROBLEM#################" "##############temp/expt_c_sin_newpostode.ode#################" "diff ( y , x , 1 ) = expt ( 2.0 , sin ( x ) ) * cos ( x ) * ln ( 2.0 ) ; " "!" "/* BEGIN FIRST INPUT BLOCK */" "" "Digits:32," "max_terms:30," "" "!" "/* END FIRST INPUT BLOCK */" "/* BEGIN SECOND INPUT BLOCK */" "" "x_start:1.4," "x_end:1.0," "array_y_init[0 + 1] : exact_soln_y(x_start)," "glob_look_poles:true," "glob_max_iter:1000000," "" "glob_max_h:0.0001," "/* END SECOND INPUT BLOCK */" "/* BEGIN OVERRIDE BLOCK */" "glob_desired_digits_correct:10," "glob_display_interval:0.01," "glob_look_poles:true," "glob_max_iter:1000000000," "glob_max_minutes:10.0," "glob_subiter_method:3," "/* END OVERRIDE BLOCK */" "!" "/* BEGIN USER DEF BLOCK */" "" "exact_soln_y (x) := (block(" "" " (expt(2.0,sin(x))) " "" "));" "/* END USER DEF BLOCK */" "#######END OF ECHO OF PROBLEM#################" "START of Optimize" min_size = 0.0 "" min_size = 1. "" glob_desired_digits_correct = 10. "" estimated_h = -1.000000E-6 "" estimated_answer = 1. "" desired_abs_gbl_error = 1.0000000000E-10 "" range = -0.3999999999999999 "" estimated_steps = 399999.9999999999 "" step_error = 2.50000000000000060000000000000000E-16 "" est_needed_step_err = 2.50000000000000060000000000000000E-16 "" opt_iter = 1 hn_div_ho = 0.5 "" hn_div_ho_2 = 0.25 "" hn_div_ho_3 = 0.125 "" max_estimated_step_error = 1.3056048922426400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E-167 "" estimated_step_error = 1.3056048922426400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E-167 "" best_h = -1.0000E-4 "" "START of Soultion" " " "TOP MAIN SOLVE Loop" x[1] = 1.4 " " y[1] (analytic) = 1.9799304185155115 " " y[1] (numeric) = 1.9799304185155115 " " absolute error = 0.0 " " relative error = 0.0 "%" Correct digits = 16 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.389900000000001 " " y[1] (analytic) = 1.9775070370376486 " " y[1] (numeric) = 1.977507022343582 " " absolute error = 1.469406663012762200000000E-8 " " relative error = 7.4306014365135580000000E-7 "%" Correct digits = 10 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3799000000000021 " " y[1] (analytic) = 1.9749752329517367 " " y[1] (numeric) = 1.974975202039042 " " absolute error = 3.09126946262949800000000E-8 " " relative error = 1.565219356198904200000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3699000000000032 " " y[1] (analytic) = 1.9723124400095313 " " y[1] (numeric) = 1.9723123911332303 " " absolute error = 4.887630100647300000000E-8 " " relative error = 2.4781216208440485000000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3599000000000043 " " y[1] (analytic) = 1.969519462715765 " " y[1] (numeric) = 1.969519394049318 " " absolute error = 6.86664469728981400000000E-8 " " relative error = 3.4864568882307034000000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3499000000000054 " " y[1] (analytic) = 1.9665971432240676 " " y[1] (numeric) = 1.966597052860836 " " absolute error = 9.03632315640834300000000E-8 " " relative error = 4.594903021975343000000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3399000000000065 " " y[1] (analytic) = 1.9635463608414014 " " y[1] (numeric) = 1.9635462467961708 " " absolute error = 1.14045230592552120000000E-7 " " relative error = 5.808125179365893000000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3299000000000076 " " y[1] (analytic) = 1.9603680315119962 " " y[1] (numeric) = 1.9603678917225602 " " absolute error = 1.3978943602666050000000E-7 " " relative error = 7.130775128935531000000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3199000000000087 " " y[1] (analytic) = 1.9570631072812732 " " y[1] (numeric) = 1.9570629396100698 " " absolute error = 1.6767120336602660000000E-7 " " relative error = 8.567490886839784000000E-6 "%" Correct digits = 9 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.3099000000000098 " " y[1] (analytic) = 1.953632575740252 " " y[1] (numeric) = 1.953632377976061 " " absolute error = 1.97764191023352960000000E-7 " " relative error = 1.012289585458094900000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.299900000000011 " " y[1] (analytic) = 1.950077459450965 " " y[1] (numeric) = 1.9500772293106603 " " absolute error = 2.30140304591230920000000E-7 " " relative error = 1.180159810964769700000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.289900000000012 " " y[1] (analytic) = 1.946398815353409 " " y[1] (numeric) = 1.946398550483758 " " absolute error = 2.64869651100951840000000E-7 " " relative error = 1.36081901104558200000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2799000000000131 " " y[1] (analytic) = 1.9425977341545877 " " y[1] (numeric) = 1.942597432134107 " " absolute error = 3.02020480624776160000000E-7 " " relative error = 1.554724765270121500000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2699000000000142 " " y[1] (analytic) = 1.9386753397001997 " " y[1] (numeric) = 1.938674998041056 " " absolute error = 3.41659143643369130000000E-7 " " relative error = 1.762332953057544600000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2599000000000153 " " y[1] (analytic) = 1.9346327883295593 " " y[1] (numeric) = 1.934632404479518 " " absolute error = 3.8385004130780940000000E-7 " " relative error = 1.98409767281594120000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2499000000000164 " " y[1] (analytic) = 1.9304712682143328 " " y[1] (numeric) = 1.930470839558751 " " absolute error = 4.28655581696801850000000E-7 " " relative error = 2.22047118107747900000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2399000000000175 " " y[1] (analytic) = 1.9261919986816964 " " y[1] (numeric) = 1.9261915225455555 " " absolute error = 4.7613614095887160000000E-7 " " relative error = 2.47190384595483480000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2299000000000186 " " y[1] (analytic) = 1.9217962295225248 " " y[1] (numeric) = 1.921795703172511 " " absolute error = 5.2635001379641720000000E-7 " " relative error = 2.738844034089869000000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2199000000000197 " " y[1] (analytic) = 1.9172852402852387 " " y[1] (numeric) = 1.9172846609318548 " " absolute error = 5.7935338393377830000000E-7 " " relative error = 3.021738089673014500000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.2099000000000208 " " y[1] (analytic) = 1.912660339555944 " " y[1] (numeric) = 1.9126597043556592 " " absolute error = 6.3520028481534040000000E-7 " " relative error = 3.32103025131379460000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.199900000000022 " " y[1] (analytic) = 1.9079228642255013 " " y[1] (numeric) = 1.9079221702829365 " " absolute error = 6.9394256474453190000000E-7 " " relative error = 3.63716258008276300000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.189900000000023 " " y[1] (analytic) = 1.903074178744183 " " y[1] (numeric) = 1.9030734231143238 " " absolute error = 7.5562985912824840000000E-7 " " relative error = 3.97057491278075100000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1799000000000242 " " y[1] (analytic) = 1.8981156743645704 " " y[1] (numeric) = 1.898114854055019 " " absolute error = 8.2030955139700270000000E-7 " " relative error = 4.32170474368806100000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1699000000000253 " " y[1] (analytic) = 1.8930487683733612 " " y[1] (numeric) = 1.893047880346604 " " absolute error = 8.8802675723975710000000E-7 " " relative error = 4.69098721636638700000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1599000000000264 " " y[1] (analytic) = 1.8878749033127507 " " y[1] (numeric) = 1.8878739444884576 " " absolute error = 9.5882429307359020000000E-7 " " relative error = 5.078855020484101000000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1499000000000275 " " y[1] (analytic) = 1.8825955461920678 " " y[1] (numeric) = 1.8825945134494124 " " absolute error = 1.0327426553935481000000E-6 " " relative error = 5.48573833334770300000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1399000000000286 " " y[1] (analytic) = 1.8772121876903458 " " y[1] (numeric) = 1.8772110778703475 " " absolute error = 1.1098199983461399000000E-6 " " relative error = 5.912064739530710000000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1299000000000297 " " y[1] (analytic) = 1.871726341350502 " " y[1] (numeric) = 1.8717251512583877 " " absolute error = 1.1900921144114562000000E-6 " " relative error = 6.35825915423497200000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1199000000000308 " " y[1] (analytic) = 1.8661395427658254 " " y[1] (numeric) = 1.8661382691734 " " absolute error = 1.2735924252993414000000E-6 " " relative error = 6.82474378851506600000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.1099000000000319 " " y[1] (analytic) = 1.8604533487594428 " " y[1] (numeric) = 1.8604519884074826 " " absolute error = 1.3603519601890213000000E-6 " " relative error = 7.31193803432969100000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.099900000000033 " " y[1] (analytic) = 1.8546693365574651 " " y[1] (numeric) = 1.8546678861581154 " " absolute error = 1.4503993497338996000000E-6 " " relative error = 7.82025842097573400000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.089900000000034 " " y[1] (analytic) = 1.848789102956494 " " y[1] (numeric) = 1.8487875591956804 " " absolute error = 1.5437608136270597000000E-6 " " relative error = 8.35011852438091500000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0799000000000352 " " y[1] (analytic) = 1.8428142634861744 " " y[1] (numeric) = 1.8428126230260187 " " absolute error = 1.6404601557162835000000E-6 " " relative error = 8.90192890418004400000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0699000000000363 " " y[1] (analytic) = 1.836746451567484 " " y[1] (numeric) = 1.836744711048726 " " absolute error = 1.7405187580088466000000E-6 " " relative error = 9.47609702212019300000E-5 "%" Correct digits = 8 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0599000000000374 " " y[1] (analytic) = 1.830587317667437 " " y[1] (numeric) = 1.8305854737118592 " " absolute error = 1.8439555777849392000000E-6 " " relative error = 1.00730271644978730000E-4 "%" Correct digits = 7 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0499000000000385 " " y[1] (analytic) = 1.8243385284508855 " " y[1] (numeric) = 1.824336577663735 " " absolute error = 1.9507871504842456000000E-6 " " relative error = 1.06931203834232030000E-4 "%" Correct digits = 7 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0399000000000396 " " y[1] (analytic) = 1.8180017659300909 " " y[1] (numeric) = 1.817999704902501 " " absolute error = 2.0610275899279884000000E-6 " " relative error = 1.13367744110719580000E-4 "%" Correct digits = 7 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0299000000000407 " " y[1] (analytic) = 1.811578726612742 " " y[1] (numeric) = 1.8115765519241536 " " absolute error = 2.174688588540974000000E-6 " " relative error = 1.20043835611117380000E-4 "%" Correct digits = 7 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0199000000000418 " " y[1] (analytic) = 1.8050711206490802 " " y[1] (numeric) = 1.8050688288696481 " " absolute error = 2.2917794320065354000000E-6 " " relative error = 1.26963386970727300000E-4 "%" Correct digits = 7 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" " " "TOP MAIN SOLVE Loop" x[1] = 1.0099000000000429 " " y[1] (analytic) = 1.7984806709787928 " " y[1] (numeric) = 1.798478258671789 " " absolute error = 2.4123070039294703000000E-6 " " relative error = 1.34130271337117720000E-4 "%" Correct digits = 7 h = -1.0000E-4 " " "NO INFO (given) for Equation 1" "NO POLE (ratio test) for Equation 1" "NO REAL POLE (three term test) for Equation 1" "NO COMPLEX POLE (six term test) for Equation 1" "Finished!" "diff ( y , x , 1 ) = expt ( 2.0 , sin ( x ) ) * cos ( x ) * ln ( 2.0 ) ; " Iterations = 4001 "Total Elapsed Time "= 5 Minutes 16 Seconds "Elapsed Time(since restart) "= 5 Minutes 16 Seconds "Expected Time Remaining "= 0 Seconds "Optimized Time Remaining "= 0 Seconds "Expected Total Time "= 5 Minutes 16 Seconds "Time to Timeout "= 4 Minutes 43 Seconds Percent Done = 0.0 "%" (%o232) true (%o232) diffeq.max