Example #1
0
double predict(void **attr, double *r) {
  int i, j, h, a;
  HashTableEntry_t *entry;
  char *s;
  static char **words = NULL;
  static int max_word_list_size = 0;
  int num_words;
  static char *buffer = NULL;
  static int buffer_size = 0;
  char **pat;

  Prediction_t p;

  if (!hash_table) {
    hash_table = (HashTableEntry_t **)
      malloc(hash_table_size * sizeof(HashTableEntry_t *));
    for (i = 0; i < hash_table_size; i++)
      hash_table[i] = NULL;
    for (i = 0; i < num_keys; i++) {
      h = hash(keys[i]);
      entry = (HashTableEntry_t *) malloc(sizeof(HashTableEntry_t));
      entry->key = keys[i];
      entry->id = i;
      entry->next = hash_table[h];
      hash_table[h] = entry;
    }
    for (i = 0; i < num_text_attr; i++)
      tokens[text_attr[i]] = (char *) malloc(num_keys * sizeof(char));
  }

  for (i = 0; i < num_text_attr; i++) {
    a = text_attr[i];
    if (!defined_attr(a))
      continue;
    for (j = 0; j < num_keys; j++)
      tokens[a][j] = 0;

    while (strlcpy(buffer, attr[a], buffer_size) >= buffer_size) {
      buffer_size = 2 * strlen(attr[a]);
      buffer = (char *) realloc(buffer, (buffer_size+1) * sizeof(char));
    }
    num_words = 0;
    for (s = strtok(buffer, WHITE_CHARS); s; s = strtok(NULL, WHITE_CHARS)) {
      if (num_words >= max_word_list_size) {
        max_word_list_size = 2 * max_word_list_size + 1;
        words = (char **) realloc(words, max_word_list_size * sizeof(char *));
      }
      words[num_words++] = s;
    }
    for (pat = text_patterns[i]; *pat; pat++) {
      set_pattern(num_words, words, *pat);
      while (more_tokens()) {
        s = next_token();
        for (entry = hash_table[hash(s)]; entry; entry = entry->next)
          if (!strcmp(entry->key, s)) {
            tokens[a][entry->id] = 1;
            break;
          }
        }
      }
  }

  reset_pred();

  add_pred(   /* R */
             -12.749460048194328);
  if (defined_attr(0)) {  /* R.0 */
    if (double_attr(0) <= 177.0) {
      add_pred(   /* R.0:0 */
                 -2.004376634962274);
    } else {
      add_pred(   /* R.0:1 */
                 -2.3567817736620276);
    }
  }
  if (defined_attr(29)) {  /* R.1 */
    if (double_attr(29) <= 3048.5) {
      add_pred(   /* R.1:0 */
                 -1.338593393492093);
    } else {
      add_pred(   /* R.1:1 */
                 -0.6200385657309491);
    }
  }
  if (defined_attr(1)) {  /* R.2 */
    if (double_attr(1) <= -393.5) {
      add_pred(   /* R.2:0 */
                 -0.8486933874746179);
    } else {
      add_pred(   /* R.2:1 */
                 -1.2644752669813994);
    }
  }
  if (defined_attr(48)) {  /* R.3 */
    if (double_attr(48) <= 403.0) {
      add_pred(   /* R.3:0 */
                 -1.376837492407414);
    } else {
      add_pred(   /* R.3:1 */
                 -0.41640583184316987);
    }
  }

  return finalize_pred();
}
Example #2
0
/*************************************
This program can be used to evaluate a jboost-trained classifier on new data.  
The code contains a single procedure:
  double predict(void **attr, double *ret)
The first argument attr is an array of pointers corresponding to the
attributes specified in the spec file.  Thus, if attribute i is text,
then attr[i] must be a char array; if attribute i is a number, then
*attr[i] must be a double; and if attribute i is finite, then *attr[i]
must be an int containing the index of the chosen value.  An undefined
attribute is indicated by setting attr[i] to NULL.
Specifically, these pointers are:
     index    attr.type    data.type   name
   ------------------------------------------
        0     number       double      H
        1     number       double      S
        2     number       double      V
The second argument ret is a pointer to an array of k doubles, where k
is the number of classes.  The scores for each of the k classes will
be stored in this array.  If ret is NULL, then no scores are stored.
In any case, predict returns the score for class 0 (=ret[0]).
These scores correspond to the classes as follows:
            index       class name
           ------------------------
               0        non-hedge
               1        hedge
This classifier was automatically generated by jboost on
Tue Jul 13 15:08:29 PDT 2010.
*************************************/
double predict_hedge(void **attr, double *r) {
  int i, j, h, a;
  HashTableEntry_t *entry;
  char *s;
  static char **words = NULL;
  static int max_word_list_size = 0;
  int num_words;
  static char *buffer = NULL;
  static int buffer_size = 0;
  char **pat;
  Prediction_t p;
  if (!hash_table) {
    hash_table = (HashTableEntry_t **)
      malloc(hash_table_size * sizeof(HashTableEntry_t *));
    for (i = 0; i < hash_table_size; i++)
      hash_table[i] = NULL;
    for (i = 0; i < num_keys; i++) {
      h = hash(keys[i]);
      entry = (HashTableEntry_t *) malloc(sizeof(HashTableEntry_t));
      entry->key = keys[i];
      entry->id = i;
      entry->next = hash_table[h];
      hash_table[h] = entry;
    }
    for (i = 0; i < num_text_attr; i++)
      tokens[text_attr[i]] = (char *) malloc(num_keys * sizeof(char));
  }
  for (i = 0; i < num_text_attr; i++) {
    a = text_attr[i];
    if (!defined_attr(a))
      continue;
    for (j = 0; j < num_keys; j++)
      tokens[a][j] = 0;
    while ((int)strlcpy(buffer, (char*)attr[a], buffer_size) >= buffer_size) {
      buffer_size = 2 * strlen((char*)attr[a]);
      buffer = (char *) realloc(buffer, (buffer_size+1) * sizeof(char));
    }
    num_words = 0;
    for (s = strtok(buffer, WHITE_CHARS); s; s = strtok(NULL, WHITE_CHARS)) {
      if (num_words >= max_word_list_size) {
        max_word_list_size = 2 * max_word_list_size + 1;
        words = (char **) realloc(words, max_word_list_size * sizeof(char *));
      }
      words[num_words++] = s;
    }
    for (pat = text_patterns[i]; *pat; pat++) {
      set_pattern(num_words, words, *pat);
      while (more_tokens()) {
        s = next_token();
        for (entry = hash_table[hash(s)]; entry; entry = entry->next)
          if (!strcmp(entry->key, s)) {
            tokens[a][entry->id] = 1;
            break;
          }
        }
      }
  }
  reset_pred();
  add_pred(   /* R */
             -1.5703415908067735);
  if (defined_attr(0)) {  /* R.0 */
    if (double_attr(0) <= 38.5) {
      add_pred(   /* R.0:0 */
                 -2.3084710148438226);
      if (defined_attr(2)) {  /* R.0:0.0 */
        if (double_attr(2) <= 151.5) {
          add_pred(   /* R.0:0.0:0 */
                     -0.684943728771417);
          if (defined_attr(0)) {  /* R.0:0.0:0.0 */
            if (double_attr(0) <= 25.5) {
              add_pred(   /* R.0:0.0:0.0:0 */
                         -2.152760562250308);
            } else {
              add_pred(   /* R.0:0.0:0.0:1 */
                         -0.145127144697649);
            }
          }
        } else {
          add_pred(   /* R.0:0.0:1 */
                     0.1622785738132802);
          if (defined_attr(0)) {  /* R.0:0.0:1.0 */
            if (double_attr(0) <= 32.5) {
              add_pred(   /* R.0:0.0:1.0:0 */
                         -0.041186232840863486);
              if (defined_attr(2)) {  /* R.0:0.0:1.0:0.0 */
                if (double_attr(2) <= 180.5) {
                  add_pred(   /* R.0:0.0:1.0:0.0:0 */
                             0.05416385221501532);
                } else {
                  add_pred(   /* R.0:0.0:1.0:0.0:1 */
                             -0.4506307670737777);
                  if (defined_attr(1)) {  /* R.0:0.0:1.0:0.0:1.0 */
                    if (double_attr(1) <= 66.5) {
                      add_pred(   /* R.0:0.0:1.0:0.0:1.0:0 */
                                 -1.754297806456438);
                    } else {
                      add_pred(   /* R.0:0.0:1.0:0.0:1.0:1 */
                                 -0.149899694117695);
                    }
                  }
                }
              }
            } else {
              add_pred(   /* R.0:0.0:1.0:1 */
                         0.4653850048809295);
              if (defined_attr(1)) {  /* R.0:0.0:1.0:1.0 */
                if (double_attr(1) <= 118.5) {
                  add_pred(   /* R.0:0.0:1.0:1.0:0 */
                             0.6200887149640352);
                  if (defined_attr(1)) {  /* R.0:0.0:1.0:1.0:0.0 */
                    if (double_attr(1) <= 66.5) {
                      add_pred(   /* R.0:0.0:1.0:1.0:0.0:0 */
                                 -0.3380329805124019);
                    } else {
                      add_pred(   /* R.0:0.0:1.0:1.0:0.0:1 */
                                 0.6620859936891355);
                      if (defined_attr(0)) {  /* R.0:0.0:1.0:1.0:0.0:1.0 */
                        if (double_attr(0) <= 34.5) {
                          add_pred(   /* R.0:0.0:1.0:1.0:0.0:1.0:0 */
                                     -0.14966868400232972);
                        } else {
                          add_pred(   /* R.0:0.0:1.0:1.0:0.0:1.0:1 */
                                     0.8345713682188565);
                          if (defined_attr(2)) {  /* R.0:0.0:1.0:1.0:0.0:1.0:1.0 */
                            if (double_attr(2) <= 165.5) {
                              add_pred(   /* R.0:0.0:1.0:1.0:0.0:1.0:1.0:0 */
                                         -0.08277050467145954);
                            } else {
                              add_pred(   /* R.0:0.0:1.0:1.0:0.0:1.0:1.0:1 */
                                         1.724622198256853);
                            }
                          }
                        }
                      }
                    }
                  }
                } else {
                  add_pred(   /* R.0:0.0:1.0:1.0:1 */
                             -0.08361314787282521);
                  if (defined_attr(2)) {  /* R.0:0.0:1.0:1.0:1.0 */
                    if (double_attr(2) <= 192.5) {
                      add_pred(   /* R.0:0.0:1.0:1.0:1.0:0 */
                                 0.16898278163413977);
                    } else {
                      add_pred(   /* R.0:0.0:1.0:1.0:1.0:1 */
                                 -1.2517067174856766);
                    }
                  }
                }
              }
            }
          }
          if (defined_attr(0)) {  /* R.0:0.0:1.1 */
            if (double_attr(0) <= 14.5) {
              add_pred(   /* R.0:0.0:1.1:0 */
                         -2.0774599935917664);
            } else {
              add_pred(   /* R.0:0.0:1.1:1 */
                         0.04230024662743034);
            }
          }
        }
      }
    } else {
      add_pred(   /* R.0:1 */
                 0.5865117555937588);
      if (defined_attr(1)) {  /* R.0:1.0 */
        if (double_attr(1) <= 68.5) {
          add_pred(   /* R.0:1.0:0 */
                     -1.944954782019729);
          if (defined_attr(1)) {  /* R.0:1.0:0.0 */
            if (double_attr(1) <= 60.5) {
              add_pred(   /* R.0:1.0:0.0:0 */
                         -0.15788699896499447);
            } else {
              add_pred(   /* R.0:1.0:0.0:1 */
                         0.4593615303922345);
              if (defined_attr(2)) {  /* R.0:1.0:0.0:1.0 */
                if (double_attr(2) <= 199.5) {
                  add_pred(   /* R.0:1.0:0.0:1.0:0 */
                             0.03642568762571531);
                } else {
                  add_pred(   /* R.0:1.0:0.0:1.0:1 */
                             1.9415332605829128);
                }
              }
              if (defined_attr(0)) {  /* R.0:1.0:0.0:1.1 */
                if (double_attr(0) <= 46.5) {
                  add_pred(   /* R.0:1.0:0.0:1.1:0 */
                             -0.059521117324528694);
                } else {
                  add_pred(   /* R.0:1.0:0.0:1.1:1 */
                             1.646241566882711);
                }
              }
            }
          }
          if (defined_attr(0)) {  /* R.0:1.0:0.1 */
            if (double_attr(0) <= 42.5) {
              add_pred(   /* R.0:1.0:0.1:0 */
                         0.5289184865811988);
              if (defined_attr(2)) {  /* R.0:1.0:0.1:0.0 */
                if (double_attr(2) <= 172.0) {
                  add_pred(   /* R.0:1.0:0.1:0.0:0 */
                             -0.20716614421251148);
                } else {
                  add_pred(   /* R.0:1.0:0.1:0.0:1 */
                             1.7944868441330777);
                }
              }
            } else {
              add_pred(   /* R.0:1.0:0.1:1 */
                         -0.15342620765351278);
            }
          }
        } else {
          add_pred(   /* R.0:1.0:1 */
                     1.3487299349956285);
          if (defined_attr(0)) {  /* R.0:1.0:1.0 */
            if (double_attr(0) <= 44.5) {
              add_pred(   /* R.0:1.0:1.0:0 */
                         -0.3885232916817575);
              if (defined_attr(0)) {  /* R.0:1.0:1.0:0.0 */
                if (double_attr(0) <= 39.5) {
                  add_pred(   /* R.0:1.0:1.0:0.0:0 */
                             -1.0183360263129613);
                  if (defined_attr(1)) {  /* R.0:1.0:1.0:0.0:0.0 */
                    if (double_attr(1) <= 130.5) {
                      add_pred(   /* R.0:1.0:1.0:0.0:0.0:0 */
                                 0.6440075359354377);
                    } else {
                      add_pred(   /* R.0:1.0:1.0:0.0:0.0:1 */
                                 -0.9755493420011564);
                    }
                  }
                } else {
                  add_pred(   /* R.0:1.0:1.0:0.0:1 */
                             -0.15689015540920606);
                  if (defined_attr(1)) {  /* R.0:1.0:1.0:0.0:1.0 */
                    if (double_attr(1) <= 172.5) {
                      add_pred(   /* R.0:1.0:1.0:0.0:1.0:0 */
                                 -0.09071514039247376);
                    } else {
                      add_pred(   /* R.0:1.0:1.0:0.0:1.0:1 */
                                 1.6527294836981075);
                    }
                  }
                }
              }
            } else {
              add_pred(   /* R.0:1.0:1.0:1 */
                         3.3724279930827445);
            }
          }
          if (defined_attr(0)) {  /* R.0:1.0:1.1 */
            if (double_attr(0) <= 47.5) {
              add_pred(   /* R.0:1.0:1.1:0 */
                         -0.10069080466293845);
              if (defined_attr(1)) {  /* R.0:1.0:1.1:0.0 */
                if (double_attr(1) <= 75.5) {
                  add_pred(   /* R.0:1.0:1.1:0.0:0 */
                             -0.5824831155640398);
                  if (defined_attr(2)) {  /* R.0:1.0:1.1:0.0:0.0 */
                    if (double_attr(2) <= 199.5) {
                      add_pred(   /* R.0:1.0:1.1:0.0:0.0:0 */
                                 -0.4329427773351343);
                    } else {
                      add_pred(   /* R.0:1.0:1.1:0.0:0.0:1 */
                                 1.5874355804408251);
                    }
                  }
                } else {
                  add_pred(   /* R.0:1.0:1.1:0.0:1 */
                             0.07069970262166185);
                  if (defined_attr(1)) {  /* R.0:1.0:1.1:0.0:1.0 */
                    if (double_attr(1) <= 131.5) {
                      add_pred(   /* R.0:1.0:1.1:0.0:1.0:0 */
                                 0.4995594730986961);
                      if (defined_attr(2)) {  /* R.0:1.0:1.1:0.0:1.0:0.0 */
                        if (double_attr(2) <= 129.5) {
                          add_pred(   /* R.0:1.0:1.1:0.0:1.0:0.0:0 */
                                     -1.9891620801262064);
                        } else {
                          add_pred(   /* R.0:1.0:1.1:0.0:1.0:0.0:1 */
                                     0.5268855571387349);
                          if (defined_attr(2)) {  /* R.0:1.0:1.1:0.0:1.0:0.0:1.0 */
                            if (double_attr(2) <= 176.5) {
                              add_pred(   /* R.0:1.0:1.1:0.0:1.0:0.0:1.0:0 */
                                         0.7557279595043741);
                              if (defined_attr(2)) {  /* R.0:1.0:1.1:0.0:1.0:0.0:1.0:0.0 */
                                if (double_attr(2) <= 147.5) {
                                  add_pred(   /* R.0:1.0:1.1:0.0:1.0:0.0:1.0:0.0:0 */
                                             0.211471570243803);
                                } else {
                                  add_pred(   /* R.0:1.0:1.1:0.0:1.0:0.0:1.0:0.0:1 */
                                             1.865638252988876);
                                }
                              }
                            } else {
                              add_pred(   /* R.0:1.0:1.1:0.0:1.0:0.0:1.0:1 */
                                         -0.40404397845501544);
                            }
                          }
                        }
                      }
                    } else {
                      add_pred(   /* R.0:1.0:1.1:0.0:1.0:1 */
                                 -0.15509001581110649);
                      if (defined_attr(1)) {  /* R.0:1.0:1.1:0.0:1.0:1.0 */
                        if (double_attr(1) <= 176.5) {
                          add_pred(   /* R.0:1.0:1.1:0.0:1.0:1.0:0 */
                                     -0.1173193141226254);
                          if (defined_attr(0)) {  /* R.0:1.0:1.1:0.0:1.0:1.0:0.0 */
                            if (double_attr(0) <= 40.5) {
                              add_pred(   /* R.0:1.0:1.1:0.0:1.0:1.0:0.0:0 */
                                         -0.3809983716248288);
                            } else {
                              add_pred(   /* R.0:1.0:1.1:0.0:1.0:1.0:0.0:1 */
                                         0.179767715726413);
                            }
                          }
                        } else {
                          add_pred(   /* R.0:1.0:1.1:0.0:1.0:1.0:1 */
                                     1.8711643753671245);
                        }
                      }
                    }
                  }
                }
              }
            } else {
              add_pred(   /* R.0:1.0:1.1:1 */
                         2.2158590253065507);
            }
          }
          if (defined_attr(1)) {  /* R.0:1.0:1.2 */
            if (double_attr(1) <= 168.5) {
              add_pred(   /* R.0:1.0:1.2:0 */
                         -0.12643459296681406);
            } else {
              add_pred(   /* R.0:1.0:1.2:1 */
                         1.683688846252166);
              if (defined_attr(2)) {  /* R.0:1.0:1.2:1.0 */
                if (double_attr(2) <= 144.5) {
                  add_pred(   /* R.0:1.0:1.2:1.0:0 */
                             1.5041581364536265);
                } else {
                  add_pred(   /* R.0:1.0:1.2:1.0:1 */
                             -0.35121334635822976);
                }
              }
            }
          }
        }
      }
    }
  }
  if (defined_attr(2)) {  /* R.1 */
    if (double_attr(2) <= 176.5) {
      add_pred(   /* R.1:0 */
                 -1.040053036460521);
      if (defined_attr(2)) {  /* R.1:0.0 */
        if (double_attr(2) <= 159.5) {
          add_pred(   /* R.1:0.0:0 */
                     -0.5124701129328292);
          if (defined_attr(0)) {  /* R.1:0.0:0.0 */
            if (double_attr(0) <= 42.5) {
              add_pred(   /* R.1:0.0:0.0:0 */
                         -0.7305519660811753);
              if (defined_attr(1)) {  /* R.1:0.0:0.0:0.0 */
                if (double_attr(1) <= 113.5) {
                  add_pred(   /* R.1:0.0:0.0:0.0:0 */
                             0.2699968474197122);
                  if (defined_attr(0)) {  /* R.1:0.0:0.0:0.0:0.0 */
                    if (double_attr(0) <= 22.5) {
                      add_pred(   /* R.1:0.0:0.0:0.0:0.0:0 */
                                 -1.678264232567051);
                    } else {
                      add_pred(   /* R.1:0.0:0.0:0.0:0.0:1 */
                                 0.17189817039697008);
                      if (defined_attr(1)) {  /* R.1:0.0:0.0:0.0:0.0:1.0 */
                        if (double_attr(1) <= 66.5) {
                          add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:0 */
                                     -0.86614427496919);
                          if (defined_attr(0)) {  /* R.1:0.0:0.0:0.0:0.0:1.0:0.0 */
                            if (double_attr(0) <= 32.5) {
                              add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:0.0:0 */
                                         0.3818265122689831);
                            } else {
                              add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:0.0:1 */
                                         -1.4081571924827916);
                            }
                          }
                        } else {
                          add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1 */
                                     0.16942954110554106);
                          if (defined_attr(0)) {  /* R.1:0.0:0.0:0.0:0.0:1.0:1.0 */
                            if (double_attr(0) <= 25.5) {
                              add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:0 */
                                         -0.3983438230659967);
                            } else {
                              add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1 */
                                         0.30615347757419353);
                              if (defined_attr(1)) {  /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1.0 */
                                if (double_attr(1) <= 85.5) {
                                  add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1.0:0 */
                                             0.0076791814589392505);
                                } else {
                                  add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1.0:1 */
                                             0.543328724671646);
                                  if (defined_attr(2)) {  /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1.0:1.0 */
                                    if (double_attr(2) <= 129.5) {
                                      add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1.0:1.0:0 */
                                                 -1.0860218657165563);
                                    } else {
                                      add_pred(   /* R.1:0.0:0.0:0.0:0.0:1.0:1.0:1.0:1.0:1 */
                                                 0.4090273199682347);
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                } else {
                  add_pred(   /* R.1:0.0:0.0:0.0:1 */
                             -0.3148436971769342);
                  if (defined_attr(0)) {  /* R.1:0.0:0.0:0.0:1.0 */
                    if (double_attr(0) <= 36.5) {
                      add_pred(   /* R.1:0.0:0.0:0.0:1.0:0 */
                                 -1.2549844173525702);
                      if (defined_attr(2)) {  /* R.1:0.0:0.0:0.0:1.0:0.0 */
                        if (double_attr(2) <= 147.5) {
                          add_pred(   /* R.1:0.0:0.0:0.0:1.0:0.0:0 */
                                     0.16040740748325924);
                        } else {
                          add_pred(   /* R.1:0.0:0.0:0.0:1.0:0.0:1 */
                                     -1.67597996198092);
                        }
                      }
                    } else {
                      add_pred(   /* R.1:0.0:0.0:0.0:1.0:1 */
                                 0.18146753524900283);
                    }
                  }
                }
              }
            } else {
              add_pred(   /* R.1:0.0:0.0:1 */
                         0.33979256653282547);
              if (defined_attr(1)) {  /* R.1:0.0:0.0:1.0 */
                if (double_attr(1) <= 85.5) {
                  add_pred(   /* R.1:0.0:0.0:1.0:0 */
                             -1.3873673060743354);
                } else {
                  add_pred(   /* R.1:0.0:0.0:1.0:1 */
                             1.9815616932116344);
                }
              }
            }
          }
          if (defined_attr(2)) {  /* R.1:0.0:0.1 */
            if (double_attr(2) <= 156.5) {
              add_pred(   /* R.1:0.0:0.1:0 */
                         -0.022491077963445762);
              if (defined_attr(0)) {  /* R.1:0.0:0.1:0.0 */
                if (double_attr(0) <= 27.5) {
                  add_pred(   /* R.1:0.0:0.1:0.0:0 */
                             -0.4420010997405122);
                } else {
                  add_pred(   /* R.1:0.0:0.1:0.0:1 */
                             0.08315664104910361);
                }
              }
            } else {
              add_pred(   /* R.1:0.0:0.1:1 */
                         0.7332461472729285);
            }
          }
        } else {
          add_pred(   /* R.1:0.0:1 */
                     0.8639652909665309);
          if (defined_attr(0)) {  /* R.1:0.0:1.0 */
            if (double_attr(0) <= 17.5) {
              add_pred(   /* R.1:0.0:1.0:0 */
                         -2.7740041174015078);
            } else {
              add_pred(   /* R.1:0.0:1.0:1 */
                         0.5142782849088333);
              if (defined_attr(2)) {  /* R.1:0.0:1.0:1.0 */
                if (double_attr(2) <= 172.5) {
                  add_pred(   /* R.1:0.0:1.0:1.0:0 */
                             -0.07445047510288035);
                } else {
                  add_pred(   /* R.1:0.0:1.0:1.0:1 */
                             0.2584637871781386);
                  if (defined_attr(0)) {  /* R.1:0.0:1.0:1.0:1.0 */
                    if (double_attr(0) <= 20.5) {
                      add_pred(   /* R.1:0.0:1.0:1.0:1.0:0 */
                                 0.8433102013190467);
                    } else {
                      add_pred(   /* R.1:0.0:1.0:1.0:1.0:1 */
                                 0.07244848447026009);
                    }
                  }
                }
              }
            }
          }
        }
      }
      if (defined_attr(2)) {  /* R.1:0.1 */
        if (double_attr(2) <= 164.5) {
          add_pred(   /* R.1:0.1:0 */
                     -0.30761154583601386);
          if (defined_attr(0)) {  /* R.1:0.1:0.0 */
            if (double_attr(0) <= 21.5) {
              add_pred(   /* R.1:0.1:0.0:0 */
                         -2.497733978950459);
            } else {
              add_pred(   /* R.1:0.1:0.0:1 */
                         0.03075786835793493);
            }
          }
        } else {
          add_pred(   /* R.1:0.1:1 */
                     0.5018782446749349);
          if (defined_attr(1)) {  /* R.1:0.1:1.0 */
            if (double_attr(1) <= 80.5) {
              add_pred(   /* R.1:0.1:1.0:0 */
                         -0.08051828521892859);
            } else {
              add_pred(   /* R.1:0.1:1.0:1 */
                         0.3433415314266024);
              if (defined_attr(2)) {  /* R.1:0.1:1.0:1.0 */
                if (double_attr(2) <= 167.5) {
                  add_pred(   /* R.1:0.1:1.0:1.0:0 */
                             -0.31430958233547046);
                } else {
                  add_pred(   /* R.1:0.1:1.0:1.0:1 */
                             0.23224382427285292);
                }
              }
            }
          }
        }
      }
      if (defined_attr(1)) {  /* R.1:0.2 */
        if (double_attr(1) <= 57.5) {
          add_pred(   /* R.1:0.2:0 */
                     -1.1971298972635522);
          if (defined_attr(2)) {  /* R.1:0.2:0.0 */
            if (double_attr(2) <= 161.5) {
              add_pred(   /* R.1:0.2:0.0:0 */
                         -2.2401358180330604);
            } else {
              add_pred(   /* R.1:0.2:0.0:1 */
                         -0.0845333173302181);
            }
          }
        } else {
          add_pred(   /* R.1:0.2:1 */
                     0.13737463393850743);
        }
      }
    } else {
      add_pred(   /* R.1:1 */
                 1.3181092195632418);
      if (defined_attr(1)) {  /* R.1:1.0 */
        if (double_attr(1) <= 30.5) {
          add_pred(   /* R.1:1.0:0 */
                     -2.5148989017986128);
        } else {
          add_pred(   /* R.1:1.0:1 */
                     -0.20409486442827884);
          if (defined_attr(2)) {  /* R.1:1.0:1.0 */
            if (double_attr(2) <= 238.5) {
              add_pred(   /* R.1:1.0:1.0:0 */
                         -0.1858564752004232);
              if (defined_attr(1)) {  /* R.1:1.0:1.0:0.0 */
                if (double_attr(1) <= 146.5) {
                  add_pred(   /* R.1:1.0:1.0:0.0:0 */
                             -0.10821366338987466);
                } else {
                  add_pred(   /* R.1:1.0:1.0:0.0:1 */
                             0.3037512034560033);
                  if (defined_attr(0)) {  /* R.1:1.0:1.0:0.0:1.0 */
                    if (double_attr(0) <= 41.5) {
                      add_pred(   /* R.1:1.0:1.0:0.0:1.0:0 */
                                 -0.047481557682593864);
                      if (defined_attr(2)) {  /* R.1:1.0:1.0:0.0:1.0:0.0 */
                        if (double_attr(2) <= 189.5) {
                          add_pred(   /* R.1:1.0:1.0:0.0:1.0:0.0:0 */
                                     0.4035584528476263);
                        } else {
                          add_pred(   /* R.1:1.0:1.0:0.0:1.0:0.0:1 */
                                     -0.6064700805580778);
                        }
                      }
                    } else {
                      add_pred(   /* R.1:1.0:1.0:0.0:1.0:1 */
                                 2.0252941965158313);
                    }
                  }
                }
              }
            } else {
              add_pred(   /* R.1:1.0:1.0:1 */
                         2.2747118243108764);
            }
          }
          if (defined_attr(2)) {  /* R.1:1.0:1.1 */
            if (double_attr(2) <= 249.5) {
              add_pred(   /* R.1:1.0:1.1:0 */
                         -0.038975390796047615);
            } else {
              add_pred(   /* R.1:1.0:1.1:1 */
                         1.5528355798277673);
            }
          }
        }
      }
    }
  }
  if (defined_attr(0)) {  /* R.2 */
    if (double_attr(0) <= 20.5) {
      add_pred(   /* R.2:0 */
                 -2.610375235184446);
    } else {
      add_pred(   /* R.2:1 */
                 -0.2710961215672253);
      if (defined_attr(2)) {  /* R.2:1.0 */
        if (double_attr(2) <= 145.5) {
          add_pred(   /* R.2:1.0:0 */
                     -1.6486691863044591);
          if (defined_attr(2)) {  /* R.2:1.0:0.0 */
            if (double_attr(2) <= 140.5) {
              add_pred(   /* R.2:1.0:0.0:0 */
                         -0.3279373004971422);
              if (defined_attr(1)) {  /* R.2:1.0:0.0:0.0 */
                if (double_attr(1) <= 93.5) {
                  add_pred(   /* R.2:1.0:0.0:0.0:0 */
                             -0.9606284812372308);
                  if (defined_attr(2)) {  /* R.2:1.0:0.0:0.0:0.0 */
                    if (double_attr(2) <= 137.5) {
                      add_pred(   /* R.2:1.0:0.0:0.0:0.0:0 */
                                 -1.763951131982535);
                    } else {
                      add_pred(   /* R.2:1.0:0.0:0.0:0.0:1 */
                                 -0.03726976801059363);
                    }
                  }
                } else {
                  add_pred(   /* R.2:1.0:0.0:0.0:1 */
                             0.14395268381709128);
                }
              }
            } else {
              add_pred(   /* R.2:1.0:0.0:1 */
                         0.5249514942841438);
            }
          }
          if (defined_attr(1)) {  /* R.2:1.0:0.1 */
            if (double_attr(1) <= 125.5) {
              add_pred(   /* R.2:1.0:0.1:0 */
                         0.3291356091991712);
            } else {
              add_pred(   /* R.2:1.0:0.1:1 */
                         -0.2950615190768818);
            }
          }
        } else {
          add_pred(   /* R.2:1.0:1 */
                     0.37915004757403853);
          if (defined_attr(1)) {  /* R.2:1.0:1.0 */
            if (double_attr(1) <= 46.5) {
              add_pred(   /* R.2:1.0:1.0:0 */
                         -2.0454621835394784);
              if (defined_attr(1)) {  /* R.2:1.0:1.0:0.0 */
                if (double_attr(1) <= 30.5) {
                  add_pred(   /* R.2:1.0:1.0:0.0:0 */
                             -1.3192679722183982);
                } else {
                  add_pred(   /* R.2:1.0:1.0:0.0:1 */
                             0.48294605488070363);
                }
              }
            } else {
              add_pred(   /* R.2:1.0:1.0:1 */
                         0.5061666509601495);
              if (defined_attr(1)) {  /* R.2:1.0:1.0:1.0 */
                if (double_attr(1) <= 124.5) {
                  add_pred(   /* R.2:1.0:1.0:1.0:0 */
                             0.490348630000452);
                  if (defined_attr(1)) {  /* R.2:1.0:1.0:1.0:0.0 */
                    if (double_attr(1) <= 77.5) {
                      add_pred(   /* R.2:1.0:1.0:1.0:0.0:0 */
                                 -0.25321685647558695);
                      if (defined_attr(2)) {  /* R.2:1.0:1.0:1.0:0.0:0.0 */
                        if (double_attr(2) <= 224.5) {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.0:0 */
                                     -0.15151260938623637);
                        } else {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.0:1 */
                                     2.845621733771073);
                        }
                      }
                      if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:0.0:0.1 */
                        if (double_attr(0) <= 31.5) {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:0 */
                                     -0.5093195262565716);
                          if (defined_attr(2)) {  /* R.2:1.0:1.0:1.0:0.0:0.1:0.0 */
                            if (double_attr(2) <= 189.5) {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:0.0:0 */
                                         -0.1419952873717447);
                            } else {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:0.0:1 */
                                         -2.1412495690489246);
                            }
                          }
                          if (defined_attr(1)) {  /* R.2:1.0:1.0:1.0:0.0:0.1:0.1 */
                            if (double_attr(1) <= 74.5) {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:0.1:0 */
                                         -0.07406036194900878);
                            } else {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:0.1:1 */
                                         0.4135929245369406);
                            }
                          }
                        } else {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:1 */
                                     0.3392695017326207);
                          if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:0.0:0.1:1.0 */
                            if (double_attr(0) <= 38.5) {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:1.0:0 */
                                         1.0031446705235072);
                            } else {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:0.1:1.0:1 */
                                         -0.23825439015685795);
                            }
                          }
                        }
                      }
                    } else {
                      add_pred(   /* R.2:1.0:1.0:1.0:0.0:1 */
                                 0.7481038558495774);
                      if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:0.0:1.0 */
                        if (double_attr(0) <= 33.5) {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.0:1.0:0 */
                                     -0.17577526394793988);
                          if (defined_attr(1)) {  /* R.2:1.0:1.0:1.0:0.0:1.0:0.0 */
                            if (double_attr(1) <= 111.5) {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:1.0:0.0:0 */
                                         0.23911466099189893);
                            } else {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:1.0:0.0:1 */
                                         -1.578696913063582);
                            }
                          }
                        } else {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.0:1.0:1 */
                                     1.6628647899159104);
                          if (defined_attr(1)) {  /* R.2:1.0:1.0:1.0:0.0:1.0:1.0 */
                            if (double_attr(1) <= 115.5) {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:1.0:1.0:0 */
                                         1.25144328347683);
                            } else {
                              add_pred(   /* R.2:1.0:1.0:1.0:0.0:1.0:1.0:1 */
                                         -0.5865273124258277);
                            }
                          }
                        }
                      }
                    }
                  }
                  if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:0.1 */
                    if (double_attr(0) <= 22.5) {
                      add_pred(   /* R.2:1.0:1.0:1.0:0.1:0 */
                                 -0.6843733016020083);
                    } else {
                      add_pred(   /* R.2:1.0:1.0:1.0:0.1:1 */
                                 0.29624089553326993);
                    }
                  }
                  if (defined_attr(2)) {  /* R.2:1.0:1.0:1.0:0.2 */
                    if (double_attr(2) <= 149.5) {
                      add_pred(   /* R.2:1.0:1.0:1.0:0.2:0 */
                                 -0.5911350821057278);
                      if (defined_attr(1)) {  /* R.2:1.0:1.0:1.0:0.2:0.0 */
                        if (double_attr(1) <= 117.5) {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.2:0.0:0 */
                                     -0.6108223989598811);
                        } else {
                          add_pred(   /* R.2:1.0:1.0:1.0:0.2:0.0:1 */
                                     0.5362523744830769);
                        }
                      }
                    } else {
                      add_pred(   /* R.2:1.0:1.0:1.0:0.2:1 */
                                 -0.026421606992493827);
                    }
                  }
                } else {
                  add_pred(   /* R.2:1.0:1.0:1.0:1 */
                             -0.43640692611804505);
                  if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:1.0 */
                    if (double_attr(0) <= 43.5) {
                      add_pred(   /* R.2:1.0:1.0:1.0:1.0:0 */
                                 -0.4956532793240687);
                    } else {
                      add_pred(   /* R.2:1.0:1.0:1.0:1.0:1 */
                                 2.835703956763267);
                    }
                  }
                  if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:1.1 */
                    if (double_attr(0) <= 42.5) {
                      add_pred(   /* R.2:1.0:1.0:1.0:1.1:0 */
                                 -0.12323362238916509);
                      if (defined_attr(0)) {  /* R.2:1.0:1.0:1.0:1.1:0.0 */
                        if (double_attr(0) <= 33.5) {
                          add_pred(   /* R.2:1.0:1.0:1.0:1.1:0.0:0 */
                                     -1.4966855552519744);
                        } else {
                          add_pred(   /* R.2:1.0:1.0:1.0:1.1:0.0:1 */
                                     -0.027351295325299976);
                        }
                      }
                    } else {
                      add_pred(   /* R.2:1.0:1.0:1.0:1.1:1 */
                                 1.1483248182182038);
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if (defined_attr(0)) {  /* R.3 */
    if (double_attr(0) <= 28.5) {
      add_pred(   /* R.3:0 */
                 -0.6163783938814559);
      if (defined_attr(2)) {  /* R.3:0.0 */
        if (double_attr(2) <= 182.5) {
          add_pred(   /* R.3:0.0:0 */
                     -0.2528365530634249);
          if (defined_attr(0)) {  /* R.3:0.0:0.0 */
            if (double_attr(0) <= 23.5) {
              add_pred(   /* R.3:0.0:0.0:0 */
                         -0.27494430137190895);
              if (defined_attr(1)) {  /* R.3:0.0:0.0:0.0 */
                if (double_attr(1) <= 62.5) {
                  add_pred(   /* R.3:0.0:0.0:0.0:0 */
                             -1.630577120954592);
                } else {
                  add_pred(   /* R.3:0.0:0.0:0.0:1 */
                             -0.13231656787855123);
                }
              }
            } else {
              add_pred(   /* R.3:0.0:0.0:1 */
                         0.2808067495727751);
              if (defined_attr(1)) {  /* R.3:0.0:0.0:1.0 */
                if (double_attr(1) <= 81.5) {
                  add_pred(   /* R.3:0.0:0.0:1.0:0 */
                             -0.13859100533933028);
                } else {
                  add_pred(   /* R.3:0.0:0.0:1.0:1 */
                             0.678522861659102);
                  if (defined_attr(0)) {  /* R.3:0.0:0.0:1.0:1.0 */
                    if (double_attr(0) <= 26.5) {
                      add_pred(   /* R.3:0.0:0.0:1.0:1.0:0 */
                                 0.13843447014463545);
                    } else {
                      add_pred(   /* R.3:0.0:0.0:1.0:1.0:1 */
                                 0.9686570177482606);
                    }
                  }
                }
              }
              if (defined_attr(2)) {  /* R.3:0.0:0.0:1.1 */
                if (double_attr(2) <= 146.5) {
                  add_pred(   /* R.3:0.0:0.0:1.1:0 */
                             -1.5993486150951208);
                } else {
                  add_pred(   /* R.3:0.0:0.0:1.1:1 */
                             0.030060253414887064);
                }
              }
            }
          }
          if (defined_attr(1)) {  /* R.3:0.0:0.1 */
            if (double_attr(1) <= 88.5) {
              add_pred(   /* R.3:0.0:0.1:0 */
                         -0.06789359723070867);
            } else {
              add_pred(   /* R.3:0.0:0.1:1 */
                         0.26859934730275725);
              if (defined_attr(0)) {  /* R.3:0.0:0.1:1.0 */
                if (double_attr(0) <= 18.5) {
                  add_pred(   /* R.3:0.0:0.1:1.0:0 */
                             -0.8622713211564897);
                } else {
                  add_pred(   /* R.3:0.0:0.1:1.0:1 */
                             0.19370923863529962);
                  if (defined_attr(2)) {  /* R.3:0.0:0.1:1.0:1.0 */
                    if (double_attr(2) <= 176.5) {
                      add_pred(   /* R.3:0.0:0.1:1.0:1.0:0 */
                                 4.6304165261783263E-4);
                    } else {
                      add_pred(   /* R.3:0.0:0.1:1.0:1.0:1 */
                                 1.554734216111625);
                    }
                  }
                }
              }
            }
          }
        } else {
          add_pred(   /* R.3:0.0:1 */
                     -1.6034195912365583);
        }
      }
    } else {
      add_pred(   /* R.3:1 */
                 0.3691242897246513);
      if (defined_attr(0)) {  /* R.3:1.0 */
        if (double_attr(0) <= 84.5) {
          add_pred(   /* R.3:1.0:0 */
                     0.14589718578227953);
          if (defined_attr(0)) {  /* R.3:1.0:0.0 */
            if (double_attr(0) <= 52.5) {
              add_pred(   /* R.3:1.0:0.0:0 */
                         -0.010443579789724959);
            } else {
              add_pred(   /* R.3:1.0:0.0:1 */
                         1.3674815451556133);
              if (defined_attr(1)) {  /* R.3:1.0:0.0:1.0 */
                if (double_attr(1) <= 30.5) {
                  add_pred(   /* R.3:1.0:0.0:1.0:0 */
                             -1.459891127193395);
                } else {
                  add_pred(   /* R.3:1.0:0.0:1.0:1 */
                             1.4633702623974139);
                }
              }
            }
          }
        } else {
          add_pred(   /* R.3:1.0:1 */
                     -3.384828121964291);
        }
      }
    }
  }
  return finalize_pred();
}