Dual-tree error compensation for high performance fixed-width multipliers