diff options
Diffstat (limited to 'src/cli/runtime/FixNum.cs')
-rw-r--r-- | src/cli/runtime/FixNum.cs | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/src/cli/runtime/FixNum.cs b/src/cli/runtime/FixNum.cs deleted file mode 100644 index 6b0d6759..00000000 --- a/src/cli/runtime/FixNum.cs +++ /dev/null @@ -1,243 +0,0 @@ -/** - * Copyright (c) Rich Hickey. All rights reserved. - * The use and distribution terms for this software are covered by the - * Common Public License 1.0 (http://opensource.org/licenses/cpl.php) - * which can be found in the file CPL.TXT at the root of this distribution. - * By using this software in any fashion, you are agreeing to be bound by - * the terms of this license. - * You must not remove this notice, or any other, from this software. - **/ - -/* rich Mar 28, 2006 10:09:27 AM */ - -using System;
-using java.math;
- -namespace clojure.lang
-{ - - -public class FixNum : IntegerNum{ -public int val; - -override public Boolean Equals(Object arg0) - { - return arg0 != null - && arg0 is FixNum - && ((FixNum) arg0).val == val; - } - -override public int GetHashCode() - { - return val; - } - -override public String ToString() - { - return val.ToString(); - } - -public FixNum(int val) - { - this.val = val; - } - -override public double doubleValue() - { - return (double) val; - } - -override public float floatValue() - { - return (float) val; - } - -override public int intValue() - { - return val; - } - -override public long longValue() - { - return (long) val; - } - -override public Boolean equiv(Num rhs) - { - return rhs.equivTo(val); - } - -override public Boolean equivTo(BigInteger x) - { - //wouldn't still be a BigInteger if it fit in int - return false; - } - -override public Boolean equivTo(int x) - { - return x == val; - } - -override public Boolean equivTo(RatioNum x) - { - //wouldn't still be a RatioNum if it was an integer - return false; - } - -override public Boolean lt(Num rhs) - { - return rhs.gt(val); - } - -override public Boolean gt(BigInteger x) - { - return x.compareTo(BigInteger.valueOf(val)) < 0; - } - -override public Boolean gt(int x) - { - return x < val; - } - -override public Boolean gt(RatioNum x) - { - return x.numerator.lt(x.denominator.multiply(val)); - } - -override public Num add(Num rhs) - { - return rhs.addTo(val); - } - -override public Num addTo(BigInteger x) - { - return Num.from(x.add(BigInteger.valueOf(val))); - } - -override public Num addTo(int x) - { - return Num.from((long) x + val); - } - -override public Num addTo(RatioNum x) - { - return x.addTo(val); - } - -override public Num subtractFrom(Num x) - { - return x.addTo(-val); - } - -override public Num multiplyBy(Num rhs) - { - return rhs.multiply(val); - } - -override public Num multiply(BigInteger x) - { - return Num.from(x.multiply(BigInteger.valueOf(val))); - } - -override public Num multiply(int x) - { - return Num.from((long) x * val); - } - -override public Num multiply(RatioNum x) - { - return x.multiply(val); - } - -override public Object truncateDivide( Num num) - { - return num.truncateBy( val); - } - -override public Object truncateBy( int div) - { - return RT.setValues( Num.from(val / div), Num.from(val % div)); - } - -override public Object truncateBy( BigInteger div) - { - return Num.truncateBigints( BigInteger.valueOf(val), div); - } - -override public Object truncateBy( RatioNum div) - { - Num q = (Num) Num.truncate( div.denominator.multiply(val), div.numerator); - return RT.setValues( q, q.multiplyBy(div).subtractFrom(this)); - } - -override public Num divideBy(Num rhs) - { - return rhs.divide(val); - } - -override public Num divide(BigInteger n) - { - return Num.divide(n, BigInteger.valueOf(val)); - } - -static int gcdf(int u, int v) - { - while(v != 0) - { - int r = u % v; - u = v; - v = r; - } - return u; - } - -override public Num divide(int n) - { - int gcd = gcdf(n, val); - if(gcd == 0) - return Num.ZERO; - - n = n / gcd; - int d = val / gcd; - if(d == 1) - return Num.from(n); - if(d < 0) - { - n = -n; - d = -d; - } - return new RatioNum((IntegerNum) Num.from(n), (IntegerNum) Num.from(d)); - } - -override public Num divide(RatioNum x) - { - return Num.divide(x.numerator, x.denominator.multiply(val)); - } - -override public Num negate() - { - return Num.from(-val); - } - -override public Boolean minusp() - { - return val < 0; - } - -override public Boolean plusp() - { - return val > 0; - } - -override public Num oneMinus() - { - return Num.from(val - 1); - } - -override public Num onePlus() - { - return Num.from(val + 1); - } - -} -} |