diff options
Diffstat (limited to 'MLKDoubleFloat.m')
-rw-r--r-- | MLKDoubleFloat.m | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/MLKDoubleFloat.m b/MLKDoubleFloat.m index 3a598fd..a60bd8c 100644 --- a/MLKDoubleFloat.m +++ b/MLKDoubleFloat.m @@ -24,6 +24,7 @@ #import <Foundation/NSString.h> +#include <math.h> #include <stdio.h> #include <stdlib.h> #include <locale.h> @@ -114,6 +115,51 @@ return [MLKDoubleFloat doubleFloatWithDouble:(value / [(MLKFloat*)arg doubleValue])]; } +-(NSComparisonResult) compare:(MLKDoubleFloat *)arg +{ + if (self->value == arg->value) + return NSOrderedSame; + else if (self->value < arg->value) + return NSOrderedAscending; + else + return NSOrderedDescending; +} + +-(BOOL) isEqual:(id)arg +{ + return ([arg isKindOfClass:[MLKDoubleFloat class]] + && self->value == ((MLKDoubleFloat *)arg)->value); +} + + +#define DEFINE_NULLARY_OPERATOR(NAME) \ + -(MLKDoubleFloat *) NAME \ + { \ + return [MLKDoubleFloat doubleFloatWithDouble:(NAME (value))]; \ + } + +DEFINE_NULLARY_OPERATOR (sin); +DEFINE_NULLARY_OPERATOR (cos); +DEFINE_NULLARY_OPERATOR (tan); +DEFINE_NULLARY_OPERATOR (asin); +DEFINE_NULLARY_OPERATOR (acos); +DEFINE_NULLARY_OPERATOR (atan); +DEFINE_NULLARY_OPERATOR (sinh); +DEFINE_NULLARY_OPERATOR (cosh); +DEFINE_NULLARY_OPERATOR (tanh); +DEFINE_NULLARY_OPERATOR (exp); +DEFINE_NULLARY_OPERATOR (log); +DEFINE_NULLARY_OPERATOR (sqrt); +DEFINE_NULLARY_OPERATOR (ceil); +DEFINE_NULLARY_OPERATOR (floor); + + +-(MLKDoubleFloat *) pow:(MLKDoubleFloat *)exponent +{ + return [MLKDoubleFloat doubleFloatWithDouble: + (pow (self->value, exponent->value))]; +} + -(NSString *) description { NSString *str = [NSString stringWithFormat:@"%e", value]; |