1 21 22 package org.armedbear.lisp; 23 24 public final class ftruncate extends Primitive 29 { 30 private ftruncate() 31 { 32 super("ftruncate", "number &optional divisor"); 33 } 34 35 public LispObject execute(LispObject arg) throws ConditionThrowable 36 { 37 if (arg instanceof LispFloat) 38 return ((LispFloat)arg).ftruncate(Fixnum.ONE); 39 LispObject q = arg.truncate(Fixnum.ONE); if (q instanceof Fixnum) 41 q = new LispFloat(((Fixnum)q).value); 42 else 43 q = new LispFloat(((Bignum)q).floatValue()); 44 LispThread.currentThread()._values[0] = q; 45 return q; 46 } 47 48 public LispObject execute(LispObject first, LispObject second) 49 throws ConditionThrowable 50 { 51 if (first instanceof LispFloat) 52 return ((LispFloat)first).ftruncate(second); 53 LispObject q = first.truncate(second); if (q instanceof Fixnum) 55 q = new LispFloat(((Fixnum)q).value); 56 else 57 q = new LispFloat(((Bignum)q).floatValue()); 58 LispThread.currentThread()._values[0] = q; 59 return q; 60 } 61 62 private static final Primitive FTRUNCATE = new ftruncate(); 63 } 64 | Popular Tags |