Implemented Expression Evaluation/Parsing with Proper Error Handling
This commit is contained in:
60
MathPad/MPParsedFactor.m
Normal file
60
MathPad/MPParsedFactor.m
Normal file
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// MPParsedFactor.m
|
||||
// MathPad
|
||||
//
|
||||
// Created by Kim Wittenburg on 10.09.14.
|
||||
// Copyright (c) 2014 Kim Wittenburg. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPParsedFactor.h"
|
||||
|
||||
@implementation MPParsedFactor {
|
||||
NSDecimalNumber *_value;
|
||||
}
|
||||
|
||||
+ (MPParsedFactor *)factorWithDecimalNumber:(NSDecimalNumber *)number
|
||||
{
|
||||
return [[MPParsedFactor alloc] initWithDecimalNumber:number];
|
||||
}
|
||||
|
||||
+ (MPParsedFactor *)sinFactorWithFactor:(MPParsedFactor *)factor
|
||||
{
|
||||
double value = factor.value.doubleValue;
|
||||
NSDecimalNumber *actualNumber = [[NSDecimalNumber alloc] initWithDouble:sin(value)];
|
||||
return [[MPParsedFactor alloc] initWithDecimalNumber:actualNumber];
|
||||
}
|
||||
|
||||
+ (MPParsedFactor *)cosFactorWithFactor:(MPParsedFactor *)factor
|
||||
{
|
||||
double value = factor.value.doubleValue;
|
||||
NSDecimalNumber *actualNumber = [[NSDecimalNumber alloc] initWithDouble:cos(value)];
|
||||
return [[MPParsedFactor alloc] initWithDecimalNumber:actualNumber];
|
||||
}
|
||||
|
||||
+ (MPParsedFactor *)tanFactorWithFactor:(MPParsedFactor *)factor
|
||||
{
|
||||
double value = factor.value.doubleValue;
|
||||
NSDecimalNumber *actualNumber = [[NSDecimalNumber alloc] initWithDouble:tan(value)];
|
||||
return [[MPParsedFactor alloc] initWithDecimalNumber:actualNumber];
|
||||
}
|
||||
|
||||
- (instancetype)initWithDecimalNumber:(NSDecimalNumber *)number
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_value = number;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSDecimalNumber *)value
|
||||
{
|
||||
return _value;
|
||||
}
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [NSString stringWithFormat:@"MPParsedFactor<%@>", _value];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user