Changeset 9963


Ignore:
Timestamp:
09/12/05 17:17:42 (16 years ago)
Author:
piso
Message:

sqrt()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/MathFunctions.java

    r9962 r9963  
    33 *
    44 * Copyright (C) 2004-2005 Peter Graves
    5  * $Id: MathFunctions.java,v 1.32 2005-09-12 12:31:42 piso Exp $
     5 * $Id: MathFunctions.java,v 1.33 2005-09-12 17:17:42 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    213213    {
    214214        if (arg instanceof Complex) {
    215             LispObject im = ((Complex)arg).getImaginaryPart();
    216             if (im.zerop())
    217                 return Complex.getInstance(atan(((Complex)arg).getRealPart()),
     215            LispObject im = ((Complex)arg).imagpart;
     216            if (im.zerop())
     217                return Complex.getInstance(atan(((Complex)arg).realpart),
    218218                                           im);
    219219            LispObject result = arg.multiplyBy(arg);
     
    601601        if (obj instanceof DoubleFloat) {
    602602            if (obj.minusp())
    603                 return Complex.getInstance(new DoubleFloat(0),
    604                                            sqrt(Fixnum.ZERO.subtract(obj)));
     603                return Complex.getInstance(new DoubleFloat(0), sqrt(obj.negate()));
    605604            return new DoubleFloat(Math.sqrt(DoubleFloat.coerceToFloat(obj).value));
    606605        }
    607606        if (obj.realp()) {
    608607            if (obj.minusp())
    609                 return Complex.getInstance(new SingleFloat(0),
    610                                            sqrt(Fixnum.ZERO.subtract(obj)));
     608                return Complex.getInstance(new SingleFloat(0), sqrt(obj.negate()));
    611609            return new SingleFloat((float)Math.sqrt(SingleFloat.coerceToFloat(obj).value));
    612610        }
    613611        if (obj instanceof Complex) {
    614612            LispObject imagpart = ((Complex)obj).imagpart;
    615             if (imagpart.zerop())
    616                 return Complex.getInstance(sqrt(((Complex)obj).realpart),
    617                                            imagpart);
     613            if (imagpart.zerop()) {
     614                LispObject realpart = ((Complex)obj).realpart;
     615                if (realpart.minusp())
     616                    return Complex.getInstance(imagpart, sqrt(realpart.negate()));
     617                else
     618                    return Complex.getInstance(sqrt(realpart), imagpart);
     619            }
    618620            return exp(log(obj).divideBy(Fixnum.TWO));
    619621        }
Note: See TracChangeset for help on using the changeset viewer.