// file: $isip_ifc/class/algo/Lyapunov/lyap_01.cc
// version: $Id: lyap_01.cc 10485 2006-03-15 17:22:34Z srinivas $
//

// isip include files
//
#include "Lyapunov.h"

// method: debug
//
// arguments:
//  const unichar* msg: (input) message to print
//
// return: a boolean value indicating status
//
boolean Lyapunov::debug(const unichar* msg_a) const {

  // declare local variables
  //
  String value;
  String output;

  // output an information message
  //
  output.debugStr(name(), msg_a, L":");
  Console::put(output);
  Console::increaseIndention();

  // display the algorithm name
  //
  output.debugStr(name(), msg_a, L"algorithm_d",
                  ALGO_MAP.getName((long)algorithm_d));
  Console::put(output);

  // display the implementation name
  //
  output.debugStr(name(), msg_a, L"implementation_d",
                  IMPL_MAP.getName((long)implementation_d));
  Console::put(output);
  
  // display the number of neighbors
  //
  value.assign((long)num_neighbors_d);
  output.debugStr(name(), msg_a, L"num_neighbors_d", value);
  Console::put(output);

  // display the evolve step for calculating trajectory matrix
  //
  value.assign((long)evolve_step_d);
  output.debugStr(name(), msg_a, L"evolve_step_d", value);
  Console::put(output);

  // display the local embedding dimension
  //
  value.assign((long)local_dim_d);
  output.debugStr(name(), msg_a, L"local_dim_d", value);
  Console::put(output);

  // display the number of steps to evolve
  //
  value.assign((long)num_steps_d);
  output.debugStr(name(), msg_a, L"num_steps_d", value);
  Console::put(output);

  // display the inner radius
  //
  value.assign((long)inner_radius_d);
  output.debugStr(name(), msg_a, L"inner_radius_d", value);
  Console::put(output);

  // display the ouiter radius
  //
  value.assign((long)outer_radius_d);
  output.debugStr(name(), msg_a, L"outer_radius_d", value);
  Console::put(output);

  // display the number of subgroups of neighbors
  //
  value.assign((long)num_neighbor_subgroups_d);
  output.debugStr(name(), msg_a, L"num_neighbor_subgroups_d", value);
  Console::put(output);

  // display the number of points to jump before recalculating LE
  //
  value.assign((long)reinit_step_d);
  output.debugStr(name(), msg_a, L"reinit_step_d", value);
  Console::put(output);

  // display the position to start calculation
  //
  value.assign((long)start_pos_d);
  output.debugStr(name(), msg_a, L"start_pos_d", value);
  Console::put(output);
  
  // display the debug level
  //
  output.debugStr(name(), msg_a, L"debug_level_d",
		  debug_level_d.getName());
  Console::put(output);

  // display the valid flag
  //
  value.assign(is_valid_d);
  output.debugStr(name(), msg_a, L"is_valid_d", value);
  Console::put(output);

  // display the base class
  //
  AlgorithmBase::debug(L"AlgorithmBase");
  
  // decrease indention
  //
  Console::decreaseIndention();

  // exit gracefully
  //
  return true;
}
