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

#import "MPFactorialTerm.h"



@implementation MPFactorialTerm

- (instancetype)initWithTerm:(MPTerm *)term
{
    self = [super init];
    if (self) {
        NSAssert(term != nil, @"term must not be nil.");
        _term = term;
    }
    return self;
}


- (NSDecimalNumber *)doEvaluation:(NSError *__autoreleasing *)error
{
    NSDecimalNumber *value = [self.term evaluate:error];
    if (!value) {
        return nil;
    }
    return [[NSDecimalNumber alloc] initWithDouble:tgamma(value.doubleValue + 1)];
}

@end
