// // MPFactorial.m // MathPad // // Created by Kim Wittenburg on 11.10.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import "MPFactorial.h" @implementation MPFactorial - (instancetype)init { self = [super init]; if (self) { } return self; } - (instancetype)initWithTokenStream:(MPTokenStream *)tokenStream { self = [self init]; if (self) { [tokenStream beginIgnoringWhitespaceTokens]; if (tokenStream.currentToken.tokenType != MPFactorialToken) { [tokenStream endIgnoringOrAcceptingWhitespaceTokens]; return nil; } else { [tokenStream currentTokenConsumed]; } [tokenStream endIgnoringOrAcceptingWhitespaceTokens]; } return self; } - (BOOL)validate:(NSError *__autoreleasing *)error { return [self.value validate:error]; } - (NSDecimalNumber *)evaluate { double value = [self.value evaluate].doubleValue; return [[NSDecimalNumber alloc] initWithDouble:tgamma(value+1)]; } @end