// Path: happycoding/src/main/java/happy/coding/io/Logs.java
// public class Logs {
// 	private final static Logger logger = LoggerFactory.getLogger(Logs.class);
// 	private static String conf = null;
// 
// 	// default configuration
// 	static {
// 		if ((conf = FileIO.getResource("log4j.properties")) != null)
// 			config(conf, false);
// 		else if ((conf = FileIO.getResource("log4j.xml")) != null)
// 			config(conf, true);
// 	}
// 
// 	public static Logger config(String config, boolean isXml) {
// 		if (isXml)
// 			DOMConfigurator.configure(config);
// 		else
// 			PropertyConfigurator.configure(config);
// 
// 		return logger;
// 	}
// 
// 	public static void debug(double data) {
// 		logger.debug(Strings.toString(data));
// 	}
// 
// 	public static void debug(Object msg) {
// 		logger.debug(msg.toString());
// 	}
// 
// 	public static void debug(String msg) {
// 		logger.debug(msg);
// 	}
// 
// 	public static void debug(String format, Object arg) {
// 		logger.debug(format, arg);
// 	}
// 
// 	public static void debug(String format, Object... args) {
// 		logger.debug(format, args);
// 	}
// 
// 	public static void debug() {
// 		debug("");
// 	}
// 
// 	public static void error() {
// 		error("");
// 	}
// 
// 	public static void warn() {
// 		warn("");
// 	}
// 
// 	public static void info() {
// 		info("");
// 	}
// 
// 	public static void info(double data) {
// 		logger.info(Strings.toString(data));
// 	}
// 
// 	public static void info(Object msg) {
// 		if (msg == null)
// 			logger.info("");
// 		else
// 			logger.info(msg.toString());
// 	}
// 
// 	public static void info(String format, Object arg) {
// 		logger.info(format, arg);
// 	}
// 
// 	public static void info(String format, Object... args) {
// 		logger.info(format, args);
// 	}
// 
// 	public static void error(double data) {
// 		logger.error(Strings.toString(data));
// 	}
// 
// 	public static void error(Object msg) {
// 		logger.error(msg.toString());
// 	}
// 
// 	public static void warn(String msg) {
// 		logger.warn(msg);
// 	}
// 
// 	public static void warn(String format, Object arg) {
// 		logger.warn(format, arg);
// 	}
// 
// 	public static void warn(String format, Object... args) {
// 		logger.warn(format, args);
// 	}
// 
// 	public static void warn(double data) {
// 		logger.warn(Strings.toString(data));
// 	}
// 
// 	public static void warn(Object msg) {
// 		logger.warn(msg.toString());
// 	}
// 
// 	public static void error(String msg) {
// 		logger.error(msg);
// 	}
// 
// 	public static void error(String format, Object arg) {
// 		logger.error(format, arg);
// 	}
// 
// 	public static void error(String format, Object... args) {
// 		logger.error(format, args);
// 	}
// 
// 	public static void off() {
// 		org.apache.log4j.Logger.getRootLogger().setLevel(Level.OFF);
// 	}
// 
// 	public static void on() {
// 		org.apache.log4j.Logger.getRootLogger().setLevel(Level.DEBUG);
// 	}
// 
// 	@Test
// 	public void example() {
// 		String[] msgs = new String[] { "Section content: ", "@author guoguibing" };
// 
// 		debug(msgs);
// 	}
// 
// }


import static java.lang.Math.exp;
import happy.coding.io.Logs;
import org.junit.Test;

	/**
	 * least common multiple (lcm)
	 * 
	 */
	public static int lcm(int a, int b) {
		if (a > 0 && b > 0)
			return (int) ((0.0 + a * b) / gcd(a, b));
		else
			return 0;
	}

	/** sqrt(a^2 + b^2) without under/overflow. **/

	public static double hypot(double a, double b) {
		double r;
		if (Math.abs(a) > Math.abs(b)) {
			r = b / a;
			r = Math.abs(a) * Math.sqrt(1 + r * r);
		} else if (!isEqual(b, 0.0)) {
			r = a / b;
			r = Math.abs(b) * Math.sqrt(1 + r * r);
		} else {
			r = 0.0;
		}
		return r;
	}

	@Test
	public void e_numbers() {
// Path: happycoding/src/main/java/happy/coding/io/Logs.java
// public class Logs {
// 	private final static Logger logger = LoggerFactory.getLogger(Logs.class);
// 	private static String conf = null;
// 
// 	// default configuration
// 	static {
// 		if ((conf = FileIO.getResource("log4j.properties")) != null)
// 			config(conf, false);
// 		else if ((conf = FileIO.getResource("log4j.xml")) != null)
// 			config(conf, true);
// 	}
// 
// 	public static Logger config(String config, boolean isXml) {
// 		if (isXml)
// 			DOMConfigurator.configure(config);
// 		else
// 			PropertyConfigurator.configure(config);
// 
// 		return logger;
// 	}
// 
// 	public static void debug(double data) {
// 		logger.debug(Strings.toString(data));
// 	}
// 
// 	public static void debug(Object msg) {
// 		logger.debug(msg.toString());
// 	}
// 
// 	public static void debug(String msg) {
// 		logger.debug(msg);
// 	}
// 
// 	public static void debug(String format, Object arg) {
// 		logger.debug(format, arg);
// 	}
// 
// 	public static void debug(String format, Object... args) {
// 		logger.debug(format, args);
// 	}
// 
// 	public static void debug() {
// 		debug("");
// 	}
// 
// 	public static void error() {
// 		error("");
// 	}
// 
// 	public static void warn() {
// 		warn("");
// 	}
// 
// 	public static void info() {
// 		info("");
// 	}
// 
// 	public static void info(double data) {
// 		logger.info(Strings.toString(data));
// 	}
// 
// 	public static void info(Object msg) {
// 		if (msg == null)
// 			logger.info("");
// 		else
// 			logger.info(msg.toString());
// 	}
// 
// 	public static void info(String format, Object arg) {
// 		logger.info(format, arg);
// 	}
// 
// 	public static void info(String format, Object... args) {
// 		logger.info(format, args);
// 	}
// 
// 	public static void error(double data) {
// 		logger.error(Strings.toString(data));
// 	}
// 
// 	public static void error(Object msg) {
// 		logger.error(msg.toString());
// 	}
// 
// 	public static void warn(String msg) {
// 		logger.warn(msg);
// 	}
// 
// 	public static void warn(String format, Object arg) {
// 		logger.warn(format, arg);
// 	}
// 
// 	public static void warn(String format, Object... args) {
// 		logger.warn(format, args);
// 	}
// 
// 	public static void warn(double data) {
// 		logger.warn(Strings.toString(data));
// 	}
// 
// 	public static void warn(Object msg) {
// 		logger.warn(msg.toString());
// 	}
// 
// 	public static void error(String msg) {
// 		logger.error(msg);
// 	}
// 
// 	public static void error(String format, Object arg) {
// 		logger.error(format, arg);
// 	}
// 
// 	public static void error(String format, Object... args) {
// 		logger.error(format, args);
// 	}
// 
// 	public static void off() {
// 		org.apache.log4j.Logger.getRootLogger().setLevel(Level.OFF);
// 	}
// 
// 	public static void on() {
// 		org.apache.log4j.Logger.getRootLogger().setLevel(Level.DEBUG);
// 	}
// 
// 	@Test
// 	public void example() {
// 		String[] msgs = new String[] { "Section content: ", "@author guoguibing" };
// 
// 		debug(msgs);
// 	}
// 
// }


// Path: happycoding/src/main/java/happy/coding/math/Maths.java
import static java.lang.Math.exp;
import happy.coding.io.Logs;
import org.junit.Test;


	/**
	 * least common multiple (lcm)
	 * 
	 */
	public static int lcm(int a, int b) {
		if (a > 0 && b > 0)
			return (int) ((0.0 + a * b) / gcd(a, b));
		else
			return 0;
	}

	/** sqrt(a^2 + b^2) without under/overflow. **/

	public static double hypot(double a, double b) {
		double r;
		if (Math.abs(a) > Math.abs(b)) {
			r = b / a;
			r = Math.abs(a) * Math.sqrt(1 + r * r);
		} else if (!isEqual(b, 0.0)) {
			r = a / b;
			r = Math.abs(b) * Math.sqrt(1 + r * r);
		} else {
			r = 0.0;
		}
		return r;
	}

	@Test
	public void e_numbers() {
		Logs.debug("Golden ratio = " + Maths.golden_ratio);