# Calculator / Classes / CalculatorBrain.m

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89``` ```// // CalculatorBrain.m // Calculator // // Created by Martin Holman on 12/10/10. // Copyright 2010 __MyCompanyName__. All rights reserved. // #import "CalculatorBrain.h" @implementation CalculatorBrain - (void)setOperand:(double)aDouble { operand = aDouble; } - (void)performWaitingOperation { if ([@"+" isEqual:waitingOperation]) { operand = waitingOperand + operand; } else if ([@"*" isEqual:waitingOperation]) { operand = waitingOperand * operand; } else if ([@"-" isEqual:waitingOperation]) { operand = waitingOperand - operand; } else if ([@"/" isEqual:waitingOperation]) { if (operand) { operand = waitingOperand / operand; } } } - (double)performOperation:(NSString *)operation { if ([operation isEqual:@"sqrt"]) { operand = sqrt(operand); } else if ([@"+/-" isEqual:operation]) { operand = - operand; } else if ([@"1/x" isEqual:operation]) { if (operand) { operand = 1 / operand; } } else if ([@"sin" isEqual:operation]) { operand = sin(operand); } else if ([@"cos" isEqual:operation]) { operand = cos(operand); } else if ([@"Store" isEqual:operation]) { storedOperand = operand; } else if ([@"Recall" isEqual:operation]) { operand = storedOperand; } else if ([@"Mem +" isEqual:operation]) { storedOperand = storedOperand + operand; } else { [self performWaitingOperation]; waitingOperation = operation; waitingOperand = operand; } return operand; } @end ```