title: composite polynomials error
body: <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>