From 9c3236394224167b31eeb402fa78928a0e3eb7fe Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Tue, 29 Jul 2008 19:56:21 +0200 Subject: Add a non-trivial number of arithmetic methods to number classes. --- MLKDoubleFloat.m | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'MLKDoubleFloat.m') diff --git a/MLKDoubleFloat.m b/MLKDoubleFloat.m index 3a598fd..a60bd8c 100644 --- a/MLKDoubleFloat.m +++ b/MLKDoubleFloat.m @@ -24,6 +24,7 @@ #import +#include #include #include #include @@ -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]; -- cgit v1.2.3