예제 #1
0
파일: priced.cpp 프로젝트: osankur/udbml
void pdbm_updateValue(PDBM &pdbm, cindex_t dim, cindex_t clock, int32_t value)
{
    assert(value >= 0);
    assert(pdbm && dim && clock < dim);
    assert(pdbm_getRate(pdbm, dim, clock) == 0);

    pdbm_prepare(pdbm, dim);

    dbm_updateValue(pdbm_matrix(pdbm), dim, clock, value);

    assertx(pdbm_isValid(pdbm, dim));
}
예제 #2
0
파일: priced.cpp 프로젝트: osankur/udbml
void pdbm_updateValueZero(PDBM &pdbm, cindex_t dim, 
                          cindex_t clock, int32_t value, cindex_t zero)
{
    assert(value >= 0);
    assert(pdbm && dim && clock < dim && zero < dim);
    assert(pdbm_areOnZeroCycle(pdbm, dim, clock, zero));

    pdbm_prepare(pdbm, dim);

    int32_t *rates = pdbm_rates(pdbm);

    if (zero)
    {
        rates[zero] += rates[clock];
    }
    rates[clock] = 0;
    dbm_updateValue(pdbm_matrix(pdbm), dim, clock, value);

    assertx(pdbm_isValid(pdbm, dim));
}
예제 #3
0
void Clocks::set( unsigned int id, int32_t value ) {
    ASSERT( value >= 0);
    ASSERT( id + 1 < dim );
    dbm_updateValue( data, dim, id + 1, value );
}