function testinternalRateOfReturn() { // various random calculations $this->assertTrue(abs(-0.02124485 - Math_Finance::internalRateOfReturn(array(-70000, 12000, 15000, 18000, 21000))) < FINANCE_PRECISION); $this->assertTrue(abs(0.08663 - Math_Finance::internalRateOfReturn(array(-70000, 12000, 15000, 18000, 21000, 26000))) < FINANCE_PRECISION); $this->assertTrue(abs(-0.443507 - Math_Finance::internalRateOfReturn(array(-70000, 12000, 15000), -0.4)) < FINANCE_PRECISION); // cash flow series must be an array $this->assertType('object', Math_Finance::internalRateOfReturn(-70000, 12000, 15000, 18000, 21000)); // cash flow must contain at least one positive value and one negative value $this->assertType('object', Math_Finance::internalRateOfReturn(array(70000, 12000, 15000, 18000, 21000))); }