@ -1523,7 +1523,13 @@ namespace storm {
for ( auto resultIt = result . begin ( ) , resultIte = result . end ( ) ; resultIt ! = resultIte ; + + resultIt , + + choiceIt , + + rowGroupIt ) {
ValueType currentValue = summand ? * summandIt : storm : : utility : : zero < ValueType > ( ) ;
+ + summandIt ;
if ( choices ) {
* choiceIt = 0 ;
}
// Only multiply and reduce if there is at least one row in the group.
if ( * rowGroupIt < * ( rowGroupIt + 1 ) ) {
for ( auto elementIte = this - > begin ( ) + * ( rowIt + 1 ) ; elementIt ! = elementIte ; + + elementIt ) {
currentValue + = elementIt - > getValue ( ) * vector [ elementIt - > getColumn ( ) ] ;
}
@ -1532,9 +1538,6 @@ namespace storm {
}
+ + rowIt ;
if ( summand ) {
+ + summandIt ;
}
for ( ; static_cast < uint_fast64_t > ( std : : distance ( rowIndications . begin ( ) , rowIt ) ) < * ( rowGroupIt + 1 ) ; + + rowIt ) {
ValueType newValue = summand ? * summandIt : storm : : utility : : zero < ValueType > ( ) ;
@ -1552,6 +1555,7 @@ namespace storm {
+ + summandIt ;
}
}
}
// Finally write value to target vector.
* resultIt = currentValue ;
@ -1581,7 +1585,10 @@ namespace storm {
for ( auto resultIt = result . end ( ) - 1 , resultIte = result . begin ( ) - 1 ; resultIt ! = resultIte ; - - resultIt , - - choiceIt , - - rowGroupIt ) {
ValueType currentValue = summand ? * summandIt : storm : : utility : : zero < ValueType > ( ) ;
- - summandIt ;
// Only multiply and reduce if there is at least one row in the group.
if ( * rowGroupIt < * ( rowGroupIt + 1 ) ) {
for ( auto elementIte = this - > begin ( ) + * rowIt - 1 ; elementIt ! = elementIte ; - - elementIt ) {
currentValue + = elementIt - > getValue ( ) * vector [ elementIt - > getColumn ( ) ] ;
}
@ -1590,9 +1597,6 @@ namespace storm {
}
- - rowIt ;
if ( summand ) {
- - summandIt ;
}
for ( uint64_t i = * rowGroupIt + 1 , end = * ( rowGroupIt + 1 ) ; i < end ; - - rowIt , + + i ) {
ValueType newValue = summand ? * summandIt : storm : : utility : : zero < ValueType > ( ) ;
@ -1610,6 +1614,9 @@ namespace storm {
- - summandIt ;
}
}
} else if ( choices ) {
* choiceIt = 0 ;
}
// Finally write value to target vector.
* resultIt = currentValue ;
@ -1654,16 +1661,18 @@ namespace storm {
for ( ; groupIt ! = groupIte ; + + groupIt , + + resultIt , + + choiceIt ) {
ValueType currentValue = summand ? * summandIt : storm : : utility : : zero < ValueType > ( ) ;
+ + summandIt ;
if ( choices ) {
* choiceIt = 0 ;
}
// Only multiply and reduce if there is at least one row in the group.
if ( * groupIt < * ( groupIt + 1 ) ) {
for ( auto elementIte = columnsAndEntries . begin ( ) + * ( rowIt + 1 ) ; elementIt ! = elementIte ; + + elementIt ) {
currentValue + = elementIt - > getValue ( ) * x [ elementIt - > getColumn ( ) ] ;
}
if ( choices ) {
* choiceIt = 0 ;
}
+ + rowIt ;
+ + summandIt ;
for ( ; static_cast < uint_fast64_t > ( std : : distance ( rowIndications . begin ( ) , rowIt ) ) < * ( groupIt + 1 ) ; + + rowIt , + + summandIt ) {
ValueType newValue = summand ? * summandIt : storm : : utility : : zero < ValueType > ( ) ;
@ -1678,6 +1687,7 @@ namespace storm {
}
}
}
}
// Finally write value to target vector.
* resultIt = currentValue ;