// // MPSumFunctionTerm.m // MathPad // // Created by Kim Wittenburg on 15.11.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import "MPSumFunctionTerm.h" #import "MPParsedExpression.h" @implementation MPSumFunctionTerm - (NSDecimalNumber *)doEvaluation:(NSError *__autoreleasing *)error { MPParsedExpression *startExpression = [self expressionAtIndex:0]; MPParsedExpression *targetExpression = [self expressionAtIndex:1]; MPParsedExpression *sumExpression = [self expressionAtIndex:2]; NSDecimalNumber *start = [startExpression evaluate:error]; NSDecimalNumber *target = [targetExpression evaluate:error]; NSDecimalNumber *value = [NSDecimalNumber zero]; for (NSDecimalNumber *current = start; [current compare:target] <= 0; current = [current decimalNumberByAdding:[[NSDecimalNumber alloc] initWithInteger:1]]) { if (![self redefineVariable:startExpression.definedVariable value:current error:error]) { return nil; } NSDecimalNumber *currentValue = [sumExpression evaluate:error]; if (!currentValue) { return nil; } value = [value decimalNumberByAdding:currentValue]; } return value; } @end