const Polynomial<T> NewtonDividedDifference<T>::operator()(int numValues,
								const Array<std::pair<T, T> >& functionValues)
{
	Array<Array<T> > divDiffTable(numValues);
	for (int i = 0; i < numValues; ++i){
		int size = numValues + 1 - i;
		divDiffTable[i] = Array<T>(size);
		divDiffTable[i][0] = functionValues[i].first;
		divDiffTable[i][1] = functionValues[i].second;
	}

	for (int j = 2; j <= numValues+1; ++j){
		for (int i = 0; i < numValues+1-j; ++i){
			T numerator = divDiffTable[i+1][j-1] - divDiffTable[i][j-1];
			T denominator = divDiffTable[j+i-1][0] - divDiffTable[i][0];
			if (denominator == 0){
				throw DivideByZeroException();
			}
			divDiffTable[i][j] = numerator / denominator;
		}
	}
	Array<T> coefficients(numValues - 1);
	for (int i = 0; i < numValues - 1; ++i){
		coefficients[i] = divDiffTable[0][i+1];
	}
	return Polynomial<T>(coefficients);
}
Example #2
0
Point&
Point::operator/=(const int divisor) {
    if (divisor == 0)
        throw DivideByZeroException();

    rx() /= divisor;
    ry() /= divisor;
    return *this;
}
Example #3
0
    Vector3& Vector3::operator/=(double value)
    {
        if(value == 0) {
            throw DivideByZeroException("value");
        }

        this->X /= value;
        this->Y /= value;
        this->Z /= value;

        return *this;
    }
Example #4
0
const DivisionResult Integer::doDivide(const Integer a, const Integer b) throw (DivideByZeroException) {
	if (b.compareTo(Integer::ZERO) == 0) {
		throw DivideByZeroException();
	}	
	if (a.compareTo(Integer::ZERO) == 0) {
		return DivisionResult(Integer::ZERO, Integer::ZERO);
	}
	if (b.compareTo(Integer::ONE) == 0) {
		return DivisionResult(a, Integer::ZERO);
	}
	DivisionResult ret(Integer::ZERO, a.abs());
	int lengthDifference = ret.remainder.bytes.length() - b.abs().bytes.length();

	for (int i = lengthDifference; i >= 0; --i) { 	
		std::stringstream ss;
		ss << i;
		
		Integer base = Integer::TEN.power(ss.str());
		Integer temp = b.abs().multiply(base);
	
			while (temp.compareTo(ret.remainder) <= 0) {    
				ret.remainder = ret.remainder.subtract(temp);
				ret.result = ret.result.add(base);
			}
	}
  if (a.isPositive() != b.isPositive()) {
    ret.result = ret.result.negate();
		if (b.isPositive()) {
			ret.remainder = b.subtract(ret.remainder);
		} else {
			ret.remainder = b.add(ret.remainder);
		}
  } else {
		if (!b.isPositive()) {
			ret.remainder = ret.remainder.negate();
		}
	}
	return ret;
}
Example #5
0
double MathUtil::divide(double left, double right)
{
    if(right == 0)
        throw DivideByZeroException("Divide By Zero Error");
    return left / right;
}
Example #6
0
Point
operator/(const Point& p, const int divisor) {
    if (divisor == 0)
        throw DivideByZeroException();
    return Point(p.x() / divisor, p.y() / divisor);
}