function testmodifiedInternalRateOfReturn() { // various random calculations $this->assertTrue(abs(0.126094 - Math_Finance::modifiedInternalRateOfReturn(array(-120000, 39000, 30000, 21000, 37000, 46000), 0.1, 0.12)) < FINANCE_PRECISION); $this->assertTrue(abs(-0.048044 - Math_Finance::modifiedInternalRateOfReturn(array(-120000, 39000, 30000, 21000), 0.1, 0.12)) < FINANCE_PRECISION); $this->assertTrue(abs(0.134759 - Math_Finance::modifiedInternalRateOfReturn(array(-120000, 39000, 30000, 21000, 37000, 46000), 0.1, 0.14)) < FINANCE_PRECISION); // cash flow series must be an array $this->assertType('object', Math_Finance::modifiedInternalRateOfReturn(-70000, 12000, 15000, 18000, 21000, 0.1, 0.12)); // cash flow must contain at least one positive value and one negative value $this->assertType('object', Math_Finance::modifiedInternalRateOfReturn(array(70000, 12000, 15000, 18000, 21000), 0.1, 0.12)); }