//
//  MPProductTerm.m
//  MathKit
//
//  Created by Kim Wittenburg on 15.11.14.
//  Copyright (c) 2014 Kim Wittenburg. All rights reserved.
//

#import "MPProductTerm.h"



@implementation MPProductTerm

- (instancetype)initWithFactors:(NSArray *)factors
{
    self = [super init];
    if (self) {
        NSAssert(factors != nil, @"factors must not be nil.");
        NSAssert(factors.count > 0, @"factors must not be empty.");
        _factors = factors.copy;
    }
    return self;
}


- (NSDecimalNumber *)doEvaluation:(NSError *__autoreleasing *)error
{
    NSDecimalNumber *value = [NSDecimalNumber one];
    for (MPTerm *factor in self.factors) {
        NSDecimalNumber *currentValue = [factor evaluate:error];
        if (!currentValue) {
            return nil;
        }
        value = [value decimalNumberByMultiplyingBy:currentValue];
    }
    return value;
}

@end
