Package com.knife.Math

Source Code of com.knife.Math.Math

/*
*  Copyright 2012 Anton Van Zyl. http://code.google.com/p/java-swiss-knife/
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*       http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*  under the License.
*/
package com.knife.Math;

import java.math.BigDecimal;

import com.knife.Math.exception.InvalidDataException;

/**
* This is a extension on the Math class in java;<br/>
* Catering for all the extra math solutions that I needed throughout.
*
* <br/>
* <br/>
* Please visit <a
* href="http://code.google.com/p/java-swiss-knife/">Java-Swiss-Knife</a> and
* comment, rate, contribute or raise a issue/enhancement for my library. <br/>
*
* @author Anton Van Zyl
*
*/
public final class Math {

  /**
   * This will take a <code>long</code> and invert it.<br/>
   * If the number is positive, a negative will be the expected result. Note
   * that a value of <code>0</code> cannot be converted and a
   * <code>InvalidDataException</code> will be thrown.
   *
   * @param input
   *            - Value to be inverted
   * @return inverted value
   * @throws InvalidDataException
   */
  public static long invertNumber(long input) throws InvalidDataException {
    long result = 0;
    if (input == 0) {
      throw new InvalidDataException("A value of 0 cannot be inverted");
    }
    if (input > 0) {
      String temp = "-" + String.valueOf(input);
      result = Long.parseLong(temp);
    } else {
      String temp = String.valueOf(input);
      int minusLocation = temp.indexOf('-');
      temp = temp.substring(minusLocation + 1);
      result = Long.parseLong(temp);
    }
    return result;
  }

  /**
   * In the Fibonacci sequence of numbers, each number is the sum of the
   * previous two numbers.</br> This sequence begins: 1, 1, 2, 3, 5, 8, 13,
   * 21, 34, 55, 89,... <br/>
   *
   * @param rounds
   *            - The number of rounds the sum will run in the loop
   * @return fibonacci calculation
   */
  public static BigDecimal fibonacci(int rounds) {
    BigDecimal numberOne = new BigDecimal(0);
    BigDecimal numberTwo = new BigDecimal(1);
    BigDecimal total = new BigDecimal(0);
    BigDecimal result = numberTwo;
    for (int x = 0; x < rounds; x++) {
      total = total.add(result);
      result = numberOne.add(numberTwo);
      numberOne = numberTwo;
      numberTwo = result;
    }

    return total;
  }

  /**
   * This will calculate the average of the sum of rounds.<br/>
   *
   * In the Fibonacci sequence of numbers, each number is the sum of the
   * previous two numbers.</br> This sequence begins: 1, 1, 2, 3, 5, 8, 13,
   * 21, 34, 55, 89,... <br/>
   * <br/>
   * <br/>
   * Please visit I was interviewed by Vaadin and was asked to produce this
   * solution for them in 2012.
   *
   * @param rounds
   *            - The number of rounds the sum will run in the loop
   * @return - fubunacci calculation average
   */
  public static BigDecimal fibonacciAverage(int rounds) {

    BigDecimal numberOne = new BigDecimal(0);
    BigDecimal numberTwo = new BigDecimal(1);
    BigDecimal total = new BigDecimal(0);
    BigDecimal result = numberTwo;
    for (int x = 0; x < rounds; x++) {
      total = total.add(result);
      result = numberOne.add(numberTwo);
      numberOne = numberTwo;
      numberTwo = result;
    }

    return total.divide(new BigDecimal(rounds));
  }

}
TOP

Related Classes of com.knife.Math.Math

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.