+ min = max = init;
+ overall_error = 1;
+
+ DEBUG0("STARTING DICOTOMI... Debuggin, format used [min, max], [D(min),D(max)]");
+
+ while(overall_error > min_error){
+ DEBUG4("====> [%e, %e] , [%e,%e]", min, max, diff(min, var_cnst), diff(max, var_cnst));
+
+ if( diff(min, var_cnst) > 0 && diff(max, var_cnst) > 0 ){
+ if(min == max){
+ min = min / 2.0;
+ }else{
+ max = min;
+ }
+ }else if( diff(min, var_cnst) < 0 && diff(max, var_cnst) < 0 ){
+ if(min == max){
+ max = max * 2.0;
+ }else{
+ min = max;
+ }
+ }else if( diff(min, var_cnst) < 0 && diff(max, var_cnst) > 0 ){
+ middle = (max + min)/2.0;
+
+ if( diff(middle, var_cnst) < 0 ){
+ min = middle;
+ }else if( diff(middle, var_cnst) > 0 ){
+ max = middle;
+ }else{
+ WARN0("Found an optimal solution with 0 error!");
+ overall_error = 0;
+ }
+ overall_error = fabs(min - max);
+ }else{
+ WARN0("The impossible happened, partial_diff(min) >0 && partial_diff(max) < 0");
+ }