composite polynomials error
<p>I have a question to complete using Java Polynomials. I've set up all my code and it looks to be ok but with my composite method I receive a different output than is expected.</p>

<pre><code>class Polyonmial
{ 
    final static private int mantissa=52;
    final static private double epsilon=Math.pow(2.0,-mantissa);
    private double coefficient=0.0;
    private int power=0;
    private Polynomial successor=null;
    public Polynomial(double coefficient, int power)
    { 
        if (Double.isNaN(coefficient)) return;
        if (Math.abs(coefficient)&lt;epsilon) return;
        if (power&lt;0) return;
        this.coefficient=coefficient;
        this.power=power;
    }

final public double coefficient(int power)
{ 
    if (power&lt;0) return 0.0;
    Polynomial traverser=this;
    do
    { 
        if (traverser.power&lt;power) return 0.0;
        if (traverser.power==power) return traverser.coefficient;
        traverser=traverser.successor;
    }
    while (traverser!=null);
    return 0.0;
}

final public Polynomial composite(Polynomial that)
{
     if (that==null) return null;
     Polynomial thisClone = this.clone();
     Polynomial thatClone = that.clone();
     Polynomial temp = new Polynomial(0.0,0);
     Polynomial result = new Polynomial(0.0,0);

     while(thisClone != null)
     {
         if (thisClone.power == 0) 
         {
             temp.coefficient = 1.0;
             temp.power = 0;
         }
         else
         {
             if (thisClone.power == 1) 
             temp = thatClone;
         }
         //System.out.println("temp:"+temp);

         while(temp != null)
         {
            temp.coefficient = thisClone.coefficient*temp.coefficient;
            result = result.plus(temp);
            temp = temp.successor;
         }
         temp = new Polynomial(0.0,0);
         thisClone=thisClone.successor;
     }
     return result;
}

final public Polynomial[] dividedBy(Polynomial that) 
{ 
    if (that==null) return null;
    if (that.coefficient==0.0) return null;
    Polynomial quotient=new Polynomial(0.0,0);
    Polynomial remainder=this.clone();

    Polynomial traverser = this.clone();
    Polynomial resultoftemp = new Polynomial(0.0, 0);
    Polynomial temp = new Polynomial(0.0, 0);

    double thiscoffe = this.coefficient(this.degree());
    double thatcoffe = that.coefficient(that.degree());

    if(that.coefficient !=0 &amp;&amp; that.power !=0)
    {
        quotient.coefficient = thatcoffe / thiscoffe;
        quotient.power = that.power - this.power; 
    }

    while(traverser !=null)
    {
        temp.power = quotient.power + traverser.power;
        temp.coefficient = quotient.coefficient * traverser.coefficient;
        traverser=traverser.successor;

        resultoftemp = resultoftemp.plus(temp);

        remainder = that.minus(resultoftemp);
    }

    Polynomial[] result=new Polynomial[2];
    result[0]=quotient;
    result[1]=remainder;
    return result;
}

final public Polynomial integrate()
{ 
    if (this.coefficient==0.0) return new Polynomial(0.0,0);
    Polynomial result=this.clone();

    Polynomial temp = new Polynomial(0.0, 0);
    Polynomial rstemp = new Polynomial(0.0, 0);

    while(result!=null)
    {
        rstemp.power = result.power + 1;
        rstemp.coefficient = result.coefficient / (result.power +1);
        result = result.successor;
        temp = temp.plus(rstemp);
    }
    return result;
}

final public Polynomial minus(Polynomial that)
{ 
    if (that==null) return null;
    if (this.equals(that)) return new Polynomial(0.0,0);
    Polynomial result=this.clone();
    if (that.coefficient==0.0) return result;
    Polynomial traverser=that;
    do
    { 
        add(result,-traverser.coefficient,traverser.power);
        traverser=traverser.successor;
    }
    while (traverser!=null);
    return result;
}

final public int powerMax()
{ 
    int max=Integer.MIN_VALUE;
    Polynomial traverser=this;
    do
    {
        if (max&lt;traverser.power) max=traverser.power;
        traverser=traverser.successor;
    }
    while (traverser!=null);
    return max;
}

final public int powerMin()
{ 
    int min=Integer.MAX_VALUE;
    Polynomial traverser=this;
    do
    {
        if (min&gt;traverser.power) min=traverser.power;
        traverser=traverser.successor;
    }
    while (traverser!=null);
    return min;
}

}
</code></pre>

<p>In my expected output file I am supposed to receive this:</p>

<pre><code>(-1.0*X^1+1.0).composite(-1.0*X^1+1.0)=
1.0*X^1
</code></pre>

<p>But instead I receive:</p>

<pre><code>(-1.0*X^1+1.0).composite(-1.0*X^1+1.0)=
1.0*X^1+1.0
</code></pre>

<p>Any tips or help is greatly appreciated.</p>
